这个 bash 循环运行良好。
for x in a b c
do
echo "$x has `ls file_${x} 2>/dev/null | wc -l`"
done
请求将其嵌入到“观看”重复循环中。
尝试#1 失败
watch --interval 30 for x in a b c
do
echo "$x has `ls file_${x} 2>/dev/null | wc -l`"
done
尝试#2 失败
watch --interval 30 ( for x in a b c
do
echo "$x has `ls file_${x} 2>/dev/null | wc -l`"
done )
您需要将命令放在引号中。否则,一旦键入换行符,命令就会结束。此外,变量将在原始 shell 中扩展,而不是在
for
循环迭代时扩展。
watch --interval 30 'for x in a b c
do
echo "$x has $(ls file_${x} 2>/dev/null | wc -l)"
done'
我还建议您停止使用古老的反引号进行命令替换,使用现代的
$(command)
。