Bash:引用'||'的第一部分或管道命令

时间:2015-10-13 12:25:02

标签: bash pipe

命令是以某种方式保存/可能在管道中引用?  例如:

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

没有预先保存原始命令。 $PREVIOUS_PIPE_CMD是一个示例变量。

1 个答案:

答案 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}'"