以下のコードの構文が間違っているのだろうか?bashの 'let'という奇妙なエラー
#!/bin/bash
set -e
let "time_used = 1 - 1"
echo $time_used
実行すると何も印刷されません。このスクリプトはlet "time_used = 1 - 1"
で死んだ。
2行目でset -e
を削除すると、正しい結果が得られます。0
どうしてですか?
以下のコードの構文が間違っているのだろうか?bashの 'let'という奇妙なエラー
#!/bin/bash
set -e
let "time_used = 1 - 1"
echo $time_used
実行すると何も印刷されません。このスクリプトはlet "time_used = 1 - 1"
で死んだ。
2行目でset -e
を削除すると、正しい結果が得られます。0
どうしてですか?
LETは
let "time_used = 1 - 1"
arithmenticシェルのbash built-inことは、シェルにおけるしかしながら
((time_used = 1 - 1))
0に相当する算術-e
|| true
で終了することを回避するために偽の手段と、エラー終了ステータスを与えることができコマンドの後に追加する。
((0)) || true
let "time_used = 1 - 1" || true
|| true
は、エラー終了ステータスを返すコマンドに対して-e
オプションをバイパスすることができますが、失敗したコマンドを偽の終了ステータスを返すコマンドと区別することはできません。他のオプションは、算術を使用して常に真理値を返すことです。
(((time_used = 1 - 1) || 1))
結果が0
の場合、let
は1
を返します。 それ以外の場合は、0
を返します。
$ help let | tail -n2 終了ステータス: 最後のARGが0と評価された場合、1を返します。そうでない場合は0を返します。
を参照してください: ''てみましょうのようなあなたがゼロでない場合のために試みることによって把握でき – Cyrus
let'ヘルプは、「time_used = 2から1」 'その場合、あなたはecho'出力 – Inian