我有一个棘手的要求:
我需要使用bash来编译100个程序,例如1.c
,2.c
,3.c
... 100.c
,我想保留成功编译的C程序,并>删除complion comploration complation cropical 。
到目前为止,我只能实现编译这100个程序的目标>
只需检查返回代码是否为非零,然后删除文件,如果该文件为非零。运行编译器后,返回代码存储在Shell变量$?
中。
这是这样的脚本的长形式。
for i in {1..99};
do
gcc ${i}.c 2> /dev/null > /dev/null
if [[ $? -ne 0 ]]; then
rm ${i}.c
fi
done
作为用户268396,中间部分可以缩短为以下。
gcc ${i}.c || rm ${i}.c
使用短路运算符||
的使用将确保仅在以前的语句失败时运行后一个语句(即,使用非零返回代码退出)。
您可以检查编译器返回的错误代码,并将其存储在$?
for f in *.c; do
t=${f%.c} # Strip the .c from the source file name
gcc -o $t $f # Try to compile
if [[ "$?" -ne 0 ]]; then
rm $f
fi
done