我试图让我们的一个嵌入式设备上的busybox编写的shell脚本可以工作。导致问题的线在下面,我已经包含使用-x标志在shell中运行它的输出。这个shell命令有什么问题
if [ cut -d : -f 1-3 /sys/class/net/eth0/address | grep -q -i 01:02:03 ]; then
# Do stuff
fi
尝试运行它时所给出的输出:
# sh -x ./script
+ [ cut -d : -f 1-3 /sys/class/net/eth0/address
sh: missing ]
+ grep -q -i 01:02:03 ]
grep: ]: No such file or directory
+ sync
我最初没有写剧本,所以我不知道什么时候停止工作。看起来,用于比较的命令(如果mac地址前缀匹配给定的样本应该返回1,否则返回0)没有正确运行,但我不知道为什么它似乎试图将命令分离出来。
那'如果'条件永远不会工作。 'cut'本身就是一个命令,它不是'['命令的选项。如果你想使用一个命令流水线作为'if'的条件,就放弃方括号。而在非忙碌的系统上,为了进一步的智慧,“人体测试”。 – ghoti