假设有一个包含参数的字符串:
echo "-v foo -d --print bar-foo ba-z fOo"
如何从破折号开始获取参数?
-v -d --print
答案 0 :(得分:2)
替代方案:
STR="-v foo -d --print bar-foo ba-z fOo"
echo "$STR" | egrep -o -e "(^| )+--?[^ ]+" | sed -e 's/ //g'
将输出:
-v
-d
--print
如果要解析传递给脚本的选项,则应考虑使用getopt
。
<强>参考文献:强>
答案 1 :(得分:0)
$ str="-v foo -d --print bar-foo ba-z"
$ for i in $str; do test ${i::1} = - && echo $i; done
-v
-d
--print
请注意,这是一个必须不引用变量的实例,因为您希望进行单词拆分。 (也就是说,不要写for i in "$str"
)