0

我正在尝试使用 bash 逐行读取文本文件,然后挑选出特定的行以存储在向量中。我正在使用的文本文件包含我想使用 cURL 从服务器下载的文件的名称。我感兴趣的每一行前面都有一个以 # 字符开头的描述行。我想逐行阅读文件,检查它是否包含#。如果所述行包含 # 则跳过它。对于那些不包含 # 我想使用该信息传递给 cURL 的行,以便我可以自动下载有问题的文件。到目前为止,我可以使用以下代码逐行阅读它。

#! /bin/bash

while read line; do
    echo $line
done <file.txt

我尝试了以下方法,但它不起作用。

#! /bin/bash

while read line; do
    if [[ "$line" =~ \#*]]
    then 
        echo $line
    fi
done <file.txt

我收到以下错误。

./script.sh: line 4: syntax error in conditional expression
./script.sh: line 5: syntax error near `then'
./script.sh: line 5: `  then '

我正在为 OS X 10.8.2 (x86_64-apple-darwin12) 使用 GNU bash 3.2.48(1)

我已经在其他地方看到过这个问题,这就是我提出尝试的地方。虽然,由于某种原因,它在我的机器上不起作用。

4

2 回答 2

3

grep对此有好处:

grep -v "^#" file | xargs -n1 curl 
于 2013-01-25T17:29:42.610 回答
2

在您的代码中 ]] 之前有一个空格。你的正则表达式匹配任何东西。(零个或多个#)

#! /bin/bash

while read line; do
    if ! [[ "$line" =~ ^\# ]]
    then 
        echo $line
    fi
done <file.txt
于 2013-01-25T17:35:27.997 回答