Give remaining
n-2
arguments of Bash script to an invoked command
我有一个带参数的 Bash 脚本 <program> <key> <number>...
,用户可以在其中提供任意数量的数字。
现在,我如何调用提供数字的 python 脚本,例如 python3 myscript <program> <number>...
?
我知道变量 "$@"
,代表所有参数,但在这种情况下,我不想提供 <key>
.
是否有一些类似 Python 的语法可以让我做这样的事情:python3 myscript "$1" "$@[2:]"
,或者我将如何解决这个问题?
最佳答案
你很接近...
python3 myscript "$1" "${@:3}"
这将提供第一个参数,然后是参数 3 及以下。
虽然 @
不是数组名称,而是表示当前上下文中的位置参数列表,但数组语法通常有效。元素提取就是其中的一个例子。当然,一个很大的区别是扩展所有位置参数的列表是用 "$@"
完成的,而不是用 "${@[@]}"
数组就是这种情况。
参数的数量以 $#
的形式提供。如果您想知道除第二个参数之外还有多少参数,可以使用 $(( $# - 2))
。如果参数少于 3 个,则此数字将为零或负数,因此请务必测试它是否会影响您的脚本。
关于python - 将 Bash 脚本的剩余 `n-2` 个参数提供给调用的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574100/