【发布时间】:2012-02-21 20:44:42
【问题描述】:
我有一个简单的脚本,其中第一个参数是为文件名保留的,所有其他可选参数都应该传递给脚本的其他部分。
使用 Google 我找到了this wiki,但它提供了一个文字示例:
echo "${@: -1}"
我不能做任何其他事情,比如:
echo "${@:2}"
或
echo "${@:2,1}"
我从终端收到“错误替换”。
有什么问题,除了第一个参数传递给 bash 脚本之外,我如何处理所有参数?
【问题讨论】:
-
为了提醒其他困惑的人,提供了错误的 shebang 导致
"{@:2}"不起作用,这就是正确答案与上面匹配的原因。 -
您刚刚使用了默认 shell,它在 Ubuntu 和许多其他 Linux 上是 dash。在破折号中,“${@: -1}”被解释为:{parameter:-word} - 使用默认值,如果参数未定义或为空,则使用 word。所以在破折号中“${@: -1}”的结果与“$@”完全相同。要使用 bash,只需在脚本文件中使用以下第一行:#!/bin/bash