我写了一个脚本,包括这个循环:
#!/bin/bash
cat "$1" | while read -r line; do
echo "$line"; sleep 2;
done
shellcheck运行发出以下消息:
SC2002:无用的猫。考虑' cmd<档案| ..'或者' cmd文件| ..'代替。
我将脚本更改为:
#!/bin/bash
cmd < "$1" | while read -r line; do
echo "$line"; sleep 2;
done
但现在bash退出:
cmd:找不到命令
我做错了什么?
答案 0 :(得分:4)
您的cmd
是整个while cond; do ... done
复合语句,在这种情况下,重定向需要在最后:
while read -r line; do
echo "$line"; sleep 0.2
done < "$1"
答案 1 :(得分:2)
删除|并将结束行作为:
{{1}}