查找以字符串中的短划线开头的参数

时间:2013-06-29 13:47:05

标签: regex bash

假设有一个包含参数的字符串:

echo "-v foo -d --print bar-foo ba-z fOo"

如何从破折号开始获取参数?

-v -d --print

2 个答案:

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