bash 如果使用管道命令进行评估
bash eval in if with piped command
bash 中的管道 eval 用于字符串长度比较
我正在尝试检查是否插入了具有给定 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 是空格感知的。
[[
和]]
需要after和behind(好吧,;
在这里很特殊,它分隔命令)。
- 要获取命令的输出,请使用命令替换
$( ... )
- 这里不需要eval。
bash 中的管道 eval 用于字符串长度比较
我正在尝试检查是否插入了具有给定 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 是空格感知的。
[[
和]]
需要after和behind(好吧,;
在这里很特殊,它分隔命令)。 - 要获取命令的输出,请使用命令替换
$( ... )
- 这里不需要eval。