【发布时间】:2018-11-20 03:12:19
【问题描述】:
假设我有一个由命令序列组成的字符串:
s1="c1|c2|c3>c4"
s2="c1>c2|c3|c4"
我想把这些字符串分成两个字符串。第一个字符串将是第一个命令c1。第二个字符串将是剩余的命令(以及管道和重定向)。
我可以很容易地得到第一个命令:
echo ${s1%%[>|]*}
c1
echo ${s2%%[>|]*}
c1
但是获取第二个字符串并不是那么简单:
我得到了什么:
echo ${s1#*[>|]}
c2|c3>c4
echo ${s2#*[>|]}
c2|c3>c4
我想要什么:
|c2|c3>c4
>c2|c3>c4
总而言之,如果我有一个复合命令,其中一个命令通过管道传输或重定向到其他命令,我想将第一个命令拆分为一个字符串,并将其余命令拆分为另一个字符串。包括所有管道和重定向。
【问题讨论】: