Bash:如果行以>开头

时间:2014-02-18 15:28:35

标签: bash if-statement

我想在Bash中使用if / then语句,但我似乎无法使其发挥作用。我想说“如果该行以>字符开头,则执行此操作,否则执行其他操作”。

我有:

while IFS= read -r line
do
    if [[$line == ">"*]]
    then
        echo $line'first'
    else
        echo $line'second'
    fi
done

但它不起作用。 我也试图逃避“>”说:

if [[$line == ^\>*]]

哪个也没用。 这两种方式我都收到了这个错误:

line 27: [[>blah: command not found

连连呢?

4 个答案:

答案 0 :(得分:4)

[[ and ]]内需要空格如下:

if [[ "$line" == ">"* ]]; then 
    echo "found"
else
    echo "not found"
fi

答案 1 :(得分:2)

此尝试尝试使用正则表达式:

line="> line"
if [[ $line =~ ^\> ]] ; then 
    echo "found"
else
    echo "not found"
fi

这个使用了一个glob模式:

line="> line"
if [[ $line == \>* ]] ; then 
    echo "found"
else
    echo "not found"
fi

答案 2 :(得分:1)

间距很重要。

$ [[ ">test" == ">"* ]]; echo $?
0
$ [[ "test" == ">"* ]]; echo $?
1

答案 3 :(得分:0)

if grep -q '>' <<<$line; then
   ..
else
   ..
fi

使用grep要好得多:)