如何将命令的输出传递给bash中的函数



我在尝试创建函数时遇到了一个问题,我有一个代码来检测连接到usb的蓝牙加密狗,这是代码的第一部分,它工作得很好,如果usb确实插入了电源,那么它会检查其统计数据(向上或向下),并将其存储在bt_stat变量中,毕竟它是打印机,到目前为止一切都很好

#!/bin/bash
clear    
echo "Looking for bluetooth USB"
bt_id=`lsusb|grep ASUS|cut -c24-32`
bt_stat="0"
if [[ -z "$bt_id" ]]; then
echo "not found"
exit 1 
else
bt_stat=`hciconfig|head -3|tail -1|grep "UP|DOWN"`
echo "USB BT found"
fi
echo $bt_stat

输出:

找到USB BT

正在运行

当我试图将该变量传递给函数时,问题就开始了

function disp
{
eval st1="$1"
echo "Status: ${st1}"
}

它本身的功能也起作用,我已经传递了一个固定的变量和输出,正如预期的那样,是"状态:测试">

var="TEST"
disp "${var}"

但是,当我把函数放在代码的开头时,即使我不使用它,也没有将命令分配给变量bt_stat,这是什么原因造成的?在程序中创建一个将命令输出分配给变量的函数时,我是否必须考虑一些因素?

下面是代码与函数的关系,很抱歉问题太长,但我希望它是清晰的

#!/bin/bash
function disp
{
eval st1="$1"
echo "Status: ${st1}"
}
clear    
echo "Looking for bluetooth USB"
bt_id=`lsusb|grep ASUS|cut -c24-32`
bt_stat="0"
if [[ -z "$bt_id" ]]; then
echo "not found"
exit 1 
else
bt_stat=`hciconfig|head -3|tail -1|grep "UP|DOWN"`
echo "USB BT found"
fi
echo $bt_stat

输出:

找到USB BT

另一行显示如果我用disp"\${bt_stat}">调用函数,但分配仍然没有发生

状态:

我想你可以做得更容易:

#!/bin/bash
function disp
{
local st1="$1"
echo "Status: ${st1}"
}
clear
echo "Looking for bluetooth USB"
bt_id=`lsusb|grep ASUS|cut -c24-32`
bt_stat=""
if [[ -z "$bt_id" ]]; then
echo "not found"
exit 1
else
bt_stat=`hciconfig|head -3|tail -1|grep "UP|DOWN"`
echo "USB BT found"
fi
disp "$bt_stat"

相关内容

  • 没有找到相关文章

最新更新