bash - 处理除第一个参数之外的所有参数(在 bash 脚本中)

标签 bash shell

我有一个简单的脚本,其中第一个参数是为文件名保留的,所有其他可选参数都应该传递给脚本的其他部分。

使用 Google 我找到了 this wiki ,但它提供了一个文字示例:

echo "${@: -1}"

我无法让其他任何东西工作,例如:

echo "${@:2,1}"

我从终端收到“Bad substitution”。

问题是什么,我如何处理传递给 bash 脚本的第一个参数以外的所有参数?

最佳答案

使用这个:

echo "${@:2}"

语法如下:

echo "${*:2}"

也可以,但不推荐,因为 @Gordon已经解释过,使用 * 时,它将所有参数作为一个带有空格的参数一起运行,而 @ 保留它们之间的中断(即使某些参数本身包含空格)。它与 echo 没有区别,但对许多其他命令很重要。

关于bash - 处理除第一个参数之外的所有参数(在 bash 脚本中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057387/

相关文章:

linux - 如何删除文件名开头的数字、破折号和下划线

bash - 无法在 bash 脚本中设置变量

android - 从 Android 应用程序运行 shell 脚本

shell - shell 中的 -lt 和 < 有什么区别?

shell - 提升至 shell 中的权力

linux - 如何在 sed 中用新行替换引号

Bash 条件 : how to "and" expressions? (if [ ! -z $VAR && -e $VAR ])

python - 为什么 python 中的 os.mkdir 设置权限的方式与 bash 中的 mkdir 之一不同?

bash - 我怎样才能结合这些线

bash - 引号转义——来自 bash 的 rsync