例如:
#!/bin/sh
a=0
while [ "$a" -lt 10 ]
b="$a"
while [ "$b" -ge 0 ] do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done*
Run Code Online (Sandbox Code Playgroud)
上面提到的脚本给出了三角形的答案,而没有双引号,它在diff行上一个接一个地落下.
在将变量扩展为其值之后,除非变量在双引号内,否则将分词(即将值分隔为空白处的标记)和文件名通配符扩展.
例:
var='foo bar'
echo No quotes: $var
echo With quotes: "$var"
Run Code Online (Sandbox Code Playgroud)
将输出:
No quotes: foo bar
With quotes: foo bar
Run Code Online (Sandbox Code Playgroud)
这里的区别在于参数如何传递给echo函数。有效地" "保留空白。
这:
echo -n "$b "
Run Code Online (Sandbox Code Playgroud)
翻译为:
echo -n "<number><space>"
Run Code Online (Sandbox Code Playgroud)
虽然这样:
echo -n $b<space>
Run Code Online (Sandbox Code Playgroud)
将忽略尾随空格并仅输出数字:
echo -n <number>
Run Code Online (Sandbox Code Playgroud)
因此,删除输出看起来“三角形”所需的所有空格。