通过多行命令使用手表

问题描述 投票:0回答:1

这个 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 )
bash
1个回答
0
投票

您需要将命令放在引号中。否则,一旦键入换行符,命令就会结束。此外,变量将在原始 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)

© www.soinside.com 2019 - 2024. All rights reserved.