在bash脚本中,我希望解析零个、一个或两个参数(脚本可以识别它们),然后将其余参数转发给脚本中调用的命令。我该怎么做呢?
当前回答
Bash支持设置子参数(请参阅子集和子字符串),因此您可以像这样选择要处理/传递的参数。
打开新文件并编辑它: Echo "params only 2: ${@:2:1}" 返回“参数2和3:${@:2:2}” Echo "params all from 2: ${@:2:99}" Echo "params all from 2: ${@:2}" 运行该程序: $ chmod u+x r.sh $ ./r.s sh 1 2 3 4 5 6 7 8 9 10 结果是: 参数只有2:2 参数2和3:2 3 参数全部来自2:2 3 4 5 6 7 8 9 10 参数全部来自2:2 3 4 5 6 7 8 9 10
其他回答
Bash使用shift命令:
如。 shifttest.sh:
#!/bin/bash
echo $1
shift
echo $1 $2
Shifttest.sh 1 2 3生成
1
2 3
使用shift内置命令“吃掉”参数。然后调用子进程并将“$@”参数传递给它以包含所有剩余参数。注意引号,它们应该被保留,因为它们会导致参数列表的扩展被正确地引用。
Bash支持设置子参数(请参阅子集和子字符串),因此您可以像这样选择要处理/传递的参数。
打开新文件并编辑它: Echo "params only 2: ${@:2:1}" 返回“参数2和3:${@:2:2}” Echo "params all from 2: ${@:2:99}" Echo "params all from 2: ${@:2}" 运行该程序: $ chmod u+x r.sh $ ./r.s sh 1 2 3 4 5 6 7 8 9 10 结果是: 参数只有2:2 参数2和3:2 3 参数全部来自2:2 3 4 5 6 7 8 9 10 参数全部来自2:2 3 4 5 6 7 8 9 10
推荐文章
- bash:错误的替换
- 如何在bash中删除字符后的所有文本?
- 如何使用Windows命令行更改目录
- 如何配置git bash命令行补全?
- /bin/sh: apt-get:未找到
- 如何检索给定相对的绝对路径
- 图形化对?
- 我如何能匹配一个字符串与正则表达式在Bash?
- 为什么cURL返回错误“(23)Failed writing body”?
- 在bash脚本中否定if条件
- 如何撤消“set -e”使bash立即退出,如果任何命令失败?
- 如何在docker映像的新容器中运行bash ?
- 如何删除所有MySQL表从命令行没有DROP数据库权限?
- 管道命令输出到tee,但也保存退出代码的命令
- 如何自动添加用户帐户和密码与Bash脚本?