Def*_*ult 10 bash shell command-line arguments
这可能不是最令人深思的问题,但却引起了我的好奇心.我无法在网上找到任何答案(更不用说确定的答案)了.
在阅读Advanced Shell Scripting时,我遇到了有关命令行位置参数的这一部分,该参数声明第九个参数之后的任何内容都必须被$ {}(变量引用/替换的较长形式)包围.
简单地说,为什么必须引用命令行参数十(和更远)${10}, ${11}...而不是$10, $11, ...?
具体来说,您的问题与"位置参数"有关.使用$ var而不是$ {var}是bash中的简写.在大多数情况下,它运作良好.Bash变量必须以字母或下划线开头.它在内部将以数字开头的变量视为"位置参数".当bash检测到位置参数时,它只查看第一个数字,这就是$ 10返回$ 1"0"的原因.通过调用$ {10},您正在指示bash查看完整变量而不是其内置的第一个数字的默认值.
至于为什么会这样?我不知道.扩展的遗留实施是我的猜测."谁还需要......?"