如何用“bash -c”命令使用位置参数?
使用命令bash -c时,我想知道使用位置参数的最佳方式。
手册页指示-c选项:
所以我猜想以下形式是正确的: $ bash -c 'printf "%s %s %sn" $0 $1 $2' param1 param2 param3 param1 param2 param3 然而I saw the following form,我不知道为什么会更好 $ bash -c 'printf "%s %s %sn" $1 $2' _ param1 param2 param1 param2 在这种情况下,字符_替换$ 0。 我知道,对于许多口译员来说,$ 0有一个特殊的含义(命令名称,所有的位置参数…),但在这种情况下,手册页很清楚。 那么,第一种形式有什么问题,而且有没有使用$ 0作为bash -c命令的第一个位置参数的缺点? bash -c 'printf "%s %s %sn" $0 $1 $2' param1 param2 param3 上面的作品,但很多人会认为是一个不好的习惯进入。如果要将代码从-c字符串复制到脚本,那么它将失败。同样,如果要将脚本中的代码复制到-c字符串,则会失败。 相反,使用以下形式,$ 1意味着在脚本或shell函数中意味着的-c字符串中的相同内容: bash -c 'printf "%s %s %sn" $1 $2 $3' _ param1 param2 param3 编程风格的一致性减少了错误。 shell对待$ 0不同 一个通常用$ @或$ *来引用脚本的所有参数。请注意,这些变量不包括$ 0: $ bash -c 'echo "$*"' param1 param2 param3 param2 param3 $ bash -c 'echo "$@"' param1 param2 param3 param2 param3 $ 0是程序名称 在常规脚本中,$ 0是脚本的名称。因此,当使用bash -c时,有些人喜欢为$ 0参数使用一些有意义的名称,例如: bash -c 'printf "%s %s %sn" $1 $2 $3' bash param1 param2 param3 要么: bash -c 'printf "%s %s %sn" $1 $2 $3' printer param1 param2 param3 如果-c字符串生成错误,则此方法具有明显的优势。例如,考虑这个脚本: $ cat script.sh #!/bin/bash bash -c 'grepp misspelling "$1"' BadPgm file.txt 如果我们运行脚本,将生成以下输出: $ ./script.sh BadPgm: grepp: command not found 这将错误的来源标识为bash -c字符串中的命令。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – 我如何观看Angular-ui的新ui-select(前ui-sel
- unix – sendmail – DSN:找不到名称服务器主机
- WebService大讲堂之Axis2(2):复合类型数据的传递
- angular – 如何在没有包装元素的情况下重复内容(也称为* n
- angular – 是否可以将服务注入apollo-client的中间件?
- 一种在Bash中转置文件的有效方法
- 刷新页面时angular2 rc1默认路由问题
- 经验积累:SoapUI的使用相关--动态取得的Soap Message内容,
- Scala Slick和SQLite
- scala – 在光滑中使用自动递增模型ID的选项?