shell/sh脚本里的$1、$2是什么意思

在 shell 脚本中,$1、$2 等表示传递给脚本的命令行参数。$0 表示脚本本身的名字,$1 表示第一个参数,$2 表示第二个参数,依此类推。例如,考虑以下的 shell 脚本(example.sh):

#!/bin/sh

echo "脚本名称: $0"
echo "第一个参数: $1"
echo "第二个参数: $2"

如果我们运行脚本并传递两个参数,如下所示:

./example.sh 参数1 参数2

脚本将输出:

脚本名称: ./example.sh
第一个参数: 参数1
第二个参数: 参数2

此外,还可以使用特殊变量来获取更多信息:

  • $#:表示传递给脚本的参数个数。

  • $*$@:在 shell 脚本中,$* 和 $@ 都表示传递给脚本的所有命令行参数。尽管它们在许多情况下是可互换的,但它们在处理带有空格的参数时有所不同。当你在双引号中使用它们时,它们的行为会有区别。

    $*:当你使用 “$*” 时,所有参数将被视为一个单独的参数,用第一个字符(默认为空格)连接在一起。这意味着,如果你有多个带空格的参数,它们将被视为一个整体。

    $@:当你使用 “$@” 时,每个参数都将被单独处理,即使它们包含空格。每个参数都会被视为它自己的独立实体。

以下是一个示例,说明了这两个变量在双引号中的行为差异:

#!/bin/sh

echo "使用 \$*:"
for arg in "$*"; do
  echo "参数:$arg"
done

echo "使用 \$@:"
for arg in "$@"; do
  echo "参数:$arg"
done

保存为 example.sh

./example.sh "参数 1" "参数 2" "参数 3"

输出将是:

扫描二维码关注公众号,回复: 16031167 查看本文章
使用 $*:
参数:参数 1 参数 2 参数 3
使用 $@:
参数:参数 1
参数:参数 2
参数:参数 3

猜你喜欢

转载自blog.csdn.net/crazyjinks/article/details/131204200
今日推荐