问题
:
关于它在管道中的使用的语义是什么?
Bash文档指出:
: [arguments]
没有效果; 该命令除了扩展参数和执行任何指定的重定向之外什么都不做。返回状态为零。
:
但是,我应该期望在管道中使用什么行为并不明显。它只是通过吗std{in,out,err}
?
关于参数,:
似乎可以替代任何其他命令。但是我需要澄清一下在管道中的使用;澄清不仅基于观察,而且引用了权威来源。
背景
我有一种情况,根据脚本运行的环境,我需要运行输出以tr -d '\r'
从输出中删除回车符。
las,目前这意味着一个if/else/fi
块,沿着(函数内部):
if [[ "$OSTYPE" == "cygwin" ]]; then
my_commands | tr -d '\r' || return $?
else
my_commands || return $?
fi
其中 the是 the和branch| tr -d '\r'
之间的唯一区别。任何一个分支的内容当然比这里显示的要复杂得多。if
else
现在,我知道tr -d '\r'
在没有回车的情况下是良性的。但这是一个调用和(在 Windows 上)可以避免的开销(该函数是一个“热”代码路径)。所以我想到tr
用内置的 shell 函数代替:
。