2014-10-31 77 views
0

我想处理包含在文本文件中的自制软件公式列表。如果出现安装错误(例如已安装,错误的公式名称),我希望它写入错误,但继续处理。 Github projectBash检测循环中的错误,然后继续处理

我有什么至今:

... 
# process list of formulas that have been installed 
for i in $(cat $FILE) ; do 

    echo "Installing $i ..." 

    # attempt to install formula; if error write error, process next formula 

    brew install $i 

done 
... 

我该怎么办呢?

+0

当前脚本会发生什么? – 2014-10-31 16:44:36

+0

在brew命令之后,下一行添加:if [[$? -ne 0]];然后继续;或者说说酿造一些东西||继续。您还应该查看“陷阱”命令 – 2014-10-31 16:47:09

回答

5

它有帮助吗?

... 
# process list of formulas that have been installed 
for i in $(< "$FILE") ; do 

    echo "Installing $i ..." 

    # attempt to install formula; if error write error, process next formula 

    brew install "$i" || continue 

done 
... 

注意,如果配方中含有空格则for循环将分割线。这可能会写得更好:

... 
# process list of formulas that have been installed 
while read i ; do 

    # Jump blank lines 
    test -z "$i" && continue 

    echo "Installing $i ..." 

    # attempt to install formula; if error write error, process next formula 

    brew install "$i" || continue 

done < "$FILE" 
... 
+0

第二个选项尝试处理文件的空行。首先提出。 – craig 2014-10-31 17:36:07

+0

好的,我插入一个测试来跳空行。 – 2014-10-31 17:40:31

1

这应该很简单。

# process list of formulas that have been installed 
for i in $(<"$FILE") ; do 

    echo "Installing $i ..." 

    # attempt to install formula; if error write error, process next formula 

    if ! brew install $i 
    then 
     echo "Failed to install $i" 
     continue 
    fi 

done 

添加一个if语句安装部分将检查的brew退出状态,如果它失败了,然后将报告和错误并继续。

+0

我喜欢添加自定义错误消息的灵活性,但brew的失败消息已足够。 – craig 2014-10-31 17:37:13