Pra*_*tic 3 grep options shell-script portability
测试命令是否采用选项的首选方法是什么?有哪些注意事项?
作为一个激励示例,在登录时,我的 shell 别名 grep 以添加几个 --exclude-dir 选项,但此选项并非在我访问的所有机器上都可用。
幸运的是,有一种相对标准化的方法可以向程序报告潜在的选项。然而,它并不总是被使用,所以这不是一个万无一失的答案;只是一个超级用户证明的答案。
$prog --help | grep -e "\b$option\b"
Run Code Online (Sandbox Code Playgroud)
(注意,\b 表示单词边界。也就是说,在您的 $option 之后不会留下任何字符,因此 $option-f 将不匹配)
这将返回您的选项,如果它存在 - 但更重要的是,如果存在,则返回退出状态 0,如果不存在,则返回退出状态 1。您可以使用以下方法进行测试:
$ # we pipe to /dev/null to hide the output, and show that it doesn't matter
$ grep --help | grep -e "\b--exclude-dir\b" > /dev/null
$ echo $?
0
$ grep --help | grep -e "\b--exclude-dirf\b" > /dev/null
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
这将适用于许多程序,但并非所有程序都有一个 --help 是...有用的。你可能也有幸
man $progr | grep -e "\b$option\b"
Run Code Online (Sandbox Code Playgroud)
如果第一个失败
归档时间: |
|
查看次数: |
9948 次 |
最近记录: |