我在尝试创建函数时遇到问题,我有一个代码来检测连接到usb的蓝牙加密狗,这是代码的第一部分,如果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发现
UP RUNNING
当我尝试将该变量传递给函数
时,问题就开始了function disp
{
eval st1="$1"
echo "Status: ${st1}"
}
它自身也起作用的功能,我传递了一个固定变量和输出,正如预期的那样是"状态:TEST"
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}" 来调用此功能,但分配仍然没有进行
状态:
答案 0 :(得分:0)
我想你可以更轻松地做到:
#!/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"