コマンドの戻り値はスクリプトには表示されません。

コマンドの戻り値はスクリプトには表示されません。

コマンドラインから次のrsyncコマンドを実行すると、正しい戻り状態が表示されます。

/usr/bin/rsync -azv -p /home/zaman x11server:/home/zamanr &> rsyncjob/output."$datetime"

echo $?
255

アクセスできないため、hostname戻り値は255です。

私は大丈夫です。しかし、同じコマンドをスクリプトに入れると、bash戻り値は得られません。

#!/bin/bash
datetime=`date +%Y.%m.%d`
ret_value= `/usr/bin/rsync -azv -p /home/zaman x11server:/home/zamanr &> rsyncjob/output."$datetime"`
echo $ret_value

スクリプト出力にはスペースが表示されます。印刷されていません$ret_value

ここで私が見逃しているのは、rsyncスクリプトを介して印刷されたコマンドの戻り値を取得することです。

ベストアンサー1

この試み。

#!/bin/bash
datetime=`date +%Y.%m.%d`
ret_value=`/usr/bin/rsync -azv -p /home/zaman x11server:/home/zamanr &> rsyncjob/output."$datetime"; echo $?`
echo $ret_value

問題は、実行中のコマンドがファイルにパイプされるため、出力が生成されないことです。最後のコマンド終了コードをエコーするコマンドを追加すると、目的の結果が得られます。

おすすめ記事