删除你的分号
for i in `seq 2`; do echo "$i"; done > out.dat
建议
还有Fredrik Pihl的建议,尽量不要使用外部二进制文件,或者至少在几乎没有的时候:
for i in {1..2}; do echo "$i"; done > out.dat
for ((i = 1; i <= 2; ++i )); do echo "$i"; done > out.dat
for i in 1 2; do echo "$i"; done > out.dat
另外,请注意可能导致路径名扩展的单词输出。
for A in $(echo '*'); do echo "$A"; done
会显示你的文件,而不是一个字面的*。
还推荐使用$()作为Bash和POSIX shell中的命令替换的清晰语法,而不是反引号(`),并且它支持嵌套。
更清晰的解决方案以及读取变量的输出
while read VAR; do
...
done <
和
read ... <
for A in "${ARRAY[@]}"; do
:
done
使用printf也可以是相对于预期功能更容易的替代方案:
printf '%s\n' {1..2} > out.dat