【发布时间】:2016-03-01 00:43:40
【问题描述】:
我一直在学习如何在 bash 中编写脚本,但遇到了一个令人沮丧的错误。在下面的代码中,它只运行打印 10 行和 10 列,每次运行 echo -n "$j " 时,输出都会打印出一个新行和 echo 命令的“-n”参数。
echo 命令和 echo -n 本身都可以正常工作,但由于某种原因,请不要在此脚本中工作...提前谢谢您
#Nested for loop
for i in 1 2 3 4 5 6 7 8 9 10
do
echo -n "Row $i: "
for j in 1 2 3 4 5 6 7 8 9 10
do
sleep 1
echo -n "$j "
done
echo #Outputs new line
done
输出看起来像这样......
-n Row 1
-n 1
-n 2
...等等
【问题讨论】:
-
echo有多种不同的实现方式:shell 内置命令(每个 shell 可能不同)和/bin/echo。有些认得-n;其他人没有。考虑改用printf命令;它在不同的实现中更加一致。同时,您的脚本顶部是否有#!行,如果有,它是什么样的,以及您执行脚本的具体情况如何? -
尝试在两个 echo 语句中使用单引号而不是双引号。
-
@arif,完全错误的建议:单引号防止变量扩展。