python - 将 Bash 脚本的剩余 `n-2` 个参数提供给调用的命令

标签 python linux bash

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/

相关文章:

python - 在 Python 中重试连接之前暂停

python - 有没有一种优雅的方法来检查数组中的哪些元素位于另一个容器中?

linux - g++ conio.h : no such file or directory

windows - 为什么 "MINGW64"出现在我的 Git bash 上?

regex - 在 bash 脚本中使用 sed

基于csv文件的Python字典更新

python - 如何将 QWidget 与 QItemDelegate 和 QTableView 一起使用

c++ - 在 Linux 上原子写入文件

linux - 通过命令提示符加入域 : AWS

linux - 如何计算csv文件标题中的列数?