2016-04-26 15 views
1
#!/bin/bash 
# exitlab 
# 
# example of exit status 
# check for non-existent file 
# exit status will be 2 
# create file and check it 
# exit status will be 0 
# 
ls xyzzy.345 > /dev/null 2>&1 
status='echo $?' 
echo "status is $status" 

# create the file and check again 
# status will not be 0 
touch xyzzy.345 

ls xyzzy.345 > /dev/null 2>&1 
status='echo $?' 
echo "status is $status" 

#remove the file 
rm xyzzy.345 

edx.orgにはLabがあり、これはスクリプトです。私はそれを実行すると、以下のように、出力は次のようになります。Bash終了コードステータススクリプトエラー

status is echo $? 
status is echo $? 

私は出力が0または2.私はstatus='(echo $?)のように括弧を入れてみましたが、それはstatus is echo $?につながることになっていると思います。次に、一重引用符の外側に括弧を入れてみましたが、status is echo $?という同じ出力がありました。

アイデア?

+0

私は 'エコー$ "状態が" 使用する'や 'STT = $ ?;?エコー "ステータスは" $ stt " –

答えて

-1

変数置換を行うには、ここで二重引用符を使用する必要があります。あなたは役に立つこのガイドを見つけるかもしれない

status='echo $?' 

status="echo $?" 

に変更します:あなたは、コマンド置換( status=$(echo $?))を探している Bash Guide for Beginners

+0

ありがとうございます。これは正しい出力 'status is echo 2'と ' status is echo 0'を生成しました。私はあなたにポイントを与えることができるように私の質問に答えてください。 – Debug255

+0

私はあなたが引用符がどのように働くかに興味があり、バッククックではないことを推測しています。私は私の答えを更新しました。一重引用符は$を保護し、二重引用符は置換を許可します。 HTH – Dinesh

1

、それは必須ではありません。あなたはstatusに直接$?の値を割り当てることができます。

status=$? 
+0

ありがとうございます。これはedx.orgのコースのスクリプトです。あなたのアドバイスは、私がこれを使う必要があるかもしれないスクリプトには意味があります。 – Debug255

関連する問題