2015-10-13 85 views
0

命令以某種方式保存/可能在管道中被引用? 例如:Bash:引用'||'的第一部分或管道命令

cd /tmp/non_existing_dir || echo "could not execute $PREVIOUS_PIPE_CMD

而不保存前的原始命令。 $PREVIOUS_PIPE_CMD是一個示例變量。

+0

可能重複的:http://stackoverflow.com/questions/1221833/bash-pipe -output-and-capture-exit-status – user2182349

+1

但是,它不是管道。它是'||'控制操作符。是錯字嗎? – sat

+0

@sat謝謝,我不知道我爲什麼說這是一個管道。將編輯。 – Zloj

回答

1

編號管道通過黑盒和中繼IO流和狀態工作。沒有辦法讓輸入的命令知道下游歷史記錄,而不會中繼/保存並傳遞它。

另外:您的示例不使用管道,它使用||,這是OR,而不是管道。

cd /tmp/non_existing_dir || echo "could not execute $PREVIOUS_PIPE_CMD" 

相同

if [[ $(cd foo) ]]; then 
    : 
else 
    echo "could not execute $PREVIOUS_PIPE_CMD 
fi 

鑑於您的例子中,你會想:

tmpdir="/tmp/non_existing_dir" 
cd ${tmpdir} 2>/dev/null || echo "could not cd into '${tmpdir}'" 
+0

這個問題在這個正確答案後被編輯。 – Zloj