使用管道命令在if中bash eval

使用管道命令在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 预期结果: 如果

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
预期结果:

如果设备已插入且字符串不是0,则它将跳转到错误状态


实际结果-无法评估管道条件猜测固定表达式如下所示:

if [ "$(lsusb -d 1c11:b04d | wc -c)" -eq 0 ]; then
要记住:

  • Bash是空间感知的<代码>[[和
    ]
    需要在后面和后面(嗯,
    在这里是特殊的,它分隔命令)
  • 要获取命令的输出,请使用命令替换
    $(…)
  • 这里不需要评估