0

現在、Bash のネストされた if ステートメントで苦労しています。これが私が現在やろうとしていることです:

if [[ `echo "$command" | cut -d "_" -f 2` == "CAPTURE" ]]; then
    if [[ "$status_general" != "Capturing" && "$status_capture" != "Running" ]]; then
        if [[ `echo "$command" | cut -d "_" -f 3-` == "" ]]; then
            *Further instructions here...*

if ステートメントの適切なクロージャーから、他のいくつかの式を試してみることまで、すべてをチェックしましたが、スクリプトを実行して 2 番目の if ステートメント (チェックする式が 2 つあるステートメント) を入力すると、Bash は次のように出力します。

line 198: [[ Idle : command not found

「アイドル」は実際には変数の初期値ですが、一体$status_generalなぜ組み込みのテスト[[が括弧内にあるものを評価しないのでしょうか? 私の構文は間違っていますか?

返信ありがとうございます。

4

2 に答える 2

2

あなたのスペースの 1 つ (特にそのスペース) は、実際にはスペースではありません。消去して再入力します。

于 2013-05-17T07:53:19.727 に答える
0

あなたの質問に答えるのではなく、スタイルの問題です。する代わりに

echo "$command" | cut -d "_" -f 2
echo "$command" | cut -d "_" -f 3-

これらのフィールドを 1 つのコマンドでキャプチャできます。

IFS=_  read -r first second third <<< "$command"

それで

if [[ $second == "CAPTURE" && $third == "" ]]; then
于 2013-05-17T20:18:50.153 に答える