我如何在 shell 脚本中使用 $14 访问第 14 个位置参数?

我如何在 shell 脚本中使用 $14 访问第 14 个位置参数?

我正在阅读有关 Unix 中的位置参数的内容,然后我发现了以下信息:

shell 允许命令行包含至少 128 个参数;然而,shell 程序在给定时间仅限于引用 9 个位置参数,即 $1 到 $9。您可以使用 Shift 命令来解决此限制。

所以我创建了一个简单的 shell 脚本,file如下所示:

#! /bin/bash
echo $14

然后像下面这样运行它:

./file 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

我得到了 14 个!

shift那么,如果 shell 在不使用命令的情况下不允许超过 10 个参数(从 $0 到 $9),这怎么可能呢?

答案1

当你跑步时

echo $14

发生的情况是 bash 将参数解释$14$14分开。然后它会展开$1(在本例中等于“1”),然后将字符串附加4到其中,结果是“14”。尽管这是您所期望的结果,但这实际上是 Bash 实际行为的副作用。就像评论中提到的 @steeldriver 一样,像这样运行脚本:

./file a b c d e f g h i j k l m n

然后调用echo $14不会输出“n”而是“a4”。

请注意,将变量用双引号引起来:

echo "$14"

在 Bash 中仍然无法正确扩展变量。标准方法是在变量名称周围使用花括号:

echo ${14}

更多信息请参见官方文档参数扩展在巴什中。它还可以做很多更酷的事情,比如

${14^^*}

将第 14 号参数大写。读一读! :)

相关内容