问题
我想找到一种简单的、单行的方式来根据特定的条件管道字符串
尝试
上面的代码是我试图根据一个名为textfolding
的变量来创建一个管道条件。
textfolding="ON"
echo "some text blah balh test foo" if [[ "$textfolding" == "ON" ]]; then | fold -s -w "$fold_width" | sed -e "s|^|t|g"; fi
这显然没有奏效。
最终
我怎么能在同一条线上实现这一点?
不能使管道本身成为条件,但可以将if
块作为管道的元素:
echo "some text blah balh test foo" | if [[ "$textfolding" == "ON" ]]; then fold -s -w "$fold_width" | sed -e "s|^|t|g"; else cat; fi
这里有一个可读性更强的版本:
echo "some text blah balh test foo" |
if [[ "$textfolding" == "ON" ]]; then
fold -s -w "$fold_width" | sed -e "s|^|t|g"
else
cat
fi
请注意,由于if
块是管道的一部分,因此需要包含类似else cat
子句的内容(如上所述),以便无论if
条件是否为真,something都将通过管道数据。如果没有cat
,它只会被扔在隐喻的地板上。
条件执行怎么样?
textfolding="ON"
string="some text blah balh test foo"
[[ $textfolding == "ON" ]] && echo $string | fold -s -w $fold_width | sed -e "s|^|t|g" || echo $string