我正在学习echo
命令:
$ echo $100
00
$ echo $1
$
那么为什么echo
解析$1
为未定义变量并打印后面的零而不是$100
整个呢?我使用的是 Ubuntu 14.04。
答案1
这位置参数, $1
, $2
, ..., $9
, 包含传递给当前 shell 或 shell 函数的命令行参数。该字符串$100
将被解释为$1
后面跟着两个零。00
如果$1
未设置或为空,则会出现此情况。
在脚本中显式设置前三个位置参数并对其进行测试:
set -- a b c
echo "$100 $200 $300"
这导致输出
a00 b00 c00
由于超过 9 的位置参数需要使用 eg 访问,因此后跟的和“位置参数 10 或 100”${10}
之间没有歧义(因为没有括号)。$1
00
如果您想打印文字字符串$100
,那么您必须$
从 shell 中转义 ,或使用单引号:
echo \$100
echo '$100'