私はこの行が何をしているかを説明するコメントなしで私たちのリポジトリの1つで見つけました。このリポジトリで見つかったバグを修正していますが、その行をどのようにすべきかわかりません。時間を効率的に調べる方法がわからないので、ここに質問します。
[ "$foo_user" = 'foo' ] && foo_user='bar' || true
$foo_user='foo'
if thenがtrueを返すかどうかをテストし、設定されていないfoo_user
場合は、「bar」を設定するifステートメントのように見えますか?私は本当に何をすべきかわかりません。
このコードは何をしますか?
答え1
それを分析しましょう:
[ "$foo_user" = 'foo' ]
foo_user
変数の値が「foo」であることを確認してください。
&& foo_user='bar'
Run() 前のコマンドが成功した場合、値が「foo」の&&
場合は「bar」に設定します。foo_user
|| true
Run()前のコマンドが失敗した場合、||
複合コマンド(この場合は行全体)はすべての場合に成功します。有効にすると、このモードが一般的ですset -e
(実際には必要ありませんが)。
また、見ることができますシェルの制御およびリダイレクト演算子は何ですか?、シェル論理演算子&&および||の優先順位と"command || true" パターンはなぜ役に立ちますか?