使用管道命令在if中bash eval
bash中用于字符串长度比较的管道求值 我试图检查是否插入了具有给定id的特定设备,并根据该设备触发操作 我试过eval/exec 这是我到目前为止所拥有的使用管道命令在if中bash eval,bash,eval,concat,Bash,Eval,Concat,bash中用于字符串长度比较的管道求值 我试图检查是否插入了具有给定id的特定设备,并根据该设备触发操作 我试过eval/exec 这是我到目前为止所拥有的 #!/bin/bash KBP='[["lsusb -d 1c11:b04d | wc -c" == "0"]]' if eval $KBP; then echo expression evaluated as true else echo expression evaluated as false fi 预期结果: 如果
#!/bin/bash
KBP='[["lsusb -d 1c11:b04d | wc -c" == "0"]]'
if eval $KBP; then
echo expression evaluated as true
else
echo expression evaluated as false
fi
预期结果:
如果设备已插入且字符串不是0,则它将跳转到错误状态
实际结果-无法评估管道条件猜测固定表达式如下所示:
if [ "$(lsusb -d 1c11:b04d | wc -c)" -eq 0 ]; then
要记住:
- Bash是空间感知的<代码>[[和
需要在后面和后面(嗯,]
在这里是特殊的,它分隔命令);
- 要获取命令的输出,请使用命令替换
$(…)
- 这里不需要评估