例如:
#!/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*
上述脚本在三角形中给出答案,而没有双引号的话,它会一个接一个地落在不同的行上。
var='foo bar'
echo No quotes: $var
echo With quotes: "$var"
将输出:
No quotes: foo bar
With quotes: foo bar
echo
函数。实际上," "
会保留空格。
echo -n "$b "
Is translated to:
echo -n "<number><space>"
虽然这样做:
echo -n $b<space>
echo -n <number>
b='*'
的情况。 - Charles Duffy您的脚本中存在错误:
while
后没有do
while
后do
前没有;
done*
末尾有星号?现在回答您的问题。
"$a"
是一个参数。$a
(不带引号)可能是多个参数:比较:
v='a b'; set $v; echo "\$#=$#, \$1=\"$1\", \$2=\"$2\""
$#=2, $1="a", $2="b"
v='a b'; set "$v"; echo "\$#=$#, \$1=\"$1\", \$2=\"$2\""
$#=1, $1="a b", $2=""