命令是以某种方式保存/可能在管道中引用? 例如:
cd /tmp/non_existing_dir || echo "could not execute $PREVIOUS_PIPE_CMD
没有预先保存原始命令。 $PREVIOUS_PIPE_CMD
是一个示例变量。
答案 0 :(得分: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}'"