2017-06-29 10 views
1

は、関数の内部で次のコードを考えてみましょう:バッシュアクセスできないリターンコード

local -r LSBLK_FAILED="Lsblk failed" 
for f in $(lsblk -lno MOUNTPOINT "$DEVPATH"); do 
    sudo umount "$f"; 
    RET=$? 
    if (($RET != 0)); then 
     echo "Unable to dismount $f - error $UNABLE_DISMOUNT_PARTITION" 
     return $UNABLE_DISMOUNT_PARTITION 
    fi 
done 
if [[ "$f" -eq "$LSBLK_FAILED" ]]; then 
    echo "Problem running Lsblk" 
fi 

私が持っている問題は、私はlsblkコマンドのリターンコードにアクセスする方法を見ることができないということです。コマンドが失敗したかどうかを検出できますが、実際の戻りコードにはアクセスできません。誰も私はこれを行うかもしれない方法を提案することはできますか?

答えて

0

lsblkへのコールを別のコマンドに分割できます。その後、終了ステータスを$?から取得できます。あなたにも割り当てて、条件を使用することができますように

l=$(lsblk -lno MOUNTPOINT "$DEVPATH") 
if ((!$?)); then 
    for f in $l; do 
    // etc. 

は、実際にはそうです:

if l=$(lsblk...); then