bash 执行文件的每一行并检查是否成功

bash 执行文件的每一行并检查是否成功

我有一个行数可变的文件,每行都是一个命令,例如file1.txt

command1
command2
command3

我的目的是执行每一行,如果命令成功则报告“good”。否则报告“bad”(命令失败)。

我尝试如下:

while read line

do
$i
        if [ $? -eq 0 ]
                then
                "echo good"
        fi
                "echo bad"
done< file1.txt

但这不起作用。我知道我在这里做了一些愚蠢的事情。

答案1

主要问题是您正在读取$line然后使用$i。此外,echo "bad"不在else块中,而是在正常块中。因此它将始终被打印。

您可能还需要使用eval

while read line
do
   eval "$line"
   if [ $? -eq 0 ]; then
       echo "good"
   else
       echo "bad"
   fi

done < file1.txt

还请注意,引用变量很重要,如eval "$line"

相关内容