我想在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
连连呢?
答案 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要好得多:)