コマンドが特定のオプションを受け入れるかどうかをテストする

コマンドが特定のオプションを受け入れるかどうかをテストする

コマンドにオプションがあるかどうかをテストするための好ましい方法は何ですか?注意事項がありますか?

動機付けの例として、私のシェルエイリアスgrepはログイン時にいくつかの--exclude-dirオプションを追加しますが、このオプションは私がアクセスしているすべてのシステムでは利用できません。

ベストアンサー1

幸い、潜在的なオプションをプログラムに報告する比較的標準化された方法があります。しかし、常に使用されるわけではないので、これは完璧な答えではなく、単に上級ユーザーが確認した答えです。

$prog --help | grep -e "\b$option\b"

(\ 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

これは多くのプログラムで機能しますが、みんな--helpがあります...役に立つ。あなたも幸運かもしれません

man $progr | grep -e "\b$option\b"

最初に失敗した場合

おすすめ記事