以下行创建file_c-6.txt但输出5:
$ i=5; ls file_a-${i}.txt file_b-${i}.txt > file_c-$(( ++i )).txt; echo $i
5
$ cat file_c-6.txt
file_a-5.txt
file_b-5.txt
如果删除>,它将列出file_c-6.txt并输出5:
我不明白为什么它没有保留i第一个示例中的值。
$ i=5; ls file_a-${i}.txt file_b-${i}.txt file_c-$(( ++i )).txt; echo $i
file_a-5.txt file_b-5.txt file_c-6.txt
6
4
真奇怪
—
glenn jackman
如果我使用
—
choroba
echo代替ls,则在两种情况下都可以使用第二种方法。
/bin/echo保留了差异,因此看起来外部命令的输出重定向发生在子外壳中。
绝对值得将错误报告发送到bug-bash@gnu.org;目前尚在开发中的4.4尚未修复。
—
chepner '16