似乎当您在循环内的 if 语句中使用 if 语句时,if 语句不会遍历每个元素。
我应该如何解决这个问题?
使用以下代码,我试图将所有无法执行的 .py
文件放入 1.log
中。但它只将在 1.log
中找到的第一个 python 文件放入。
for i in `find ~/desktop -name '*.py'` ; do
if $i ; then
true
else
if [[ -e "1.log" ]];then
echo "$i" > 1.log
fi
fi
done
最佳答案
您正在使用 >
重定向,它将替换所有文件内容。使用 >>>
来连接。
此外,在开始循环之前确保文件存在(我为此添加了一个touch
命令)
touch 1.log
for i in `find ~/desktop -name '*.py'` ; do
if $i ; then
true
else
if [[ -e "1.log" ]] ; then
echo "$i" >> 1.log
fi
fi
done
关于linux - for 循环中 if 语句中的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890279/