2017-06-29 90 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