我有一个行数可变的文件,每行都是一个命令,例如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"
。