我尝试使用 2 个条件进行 for 循环,但我没有以任何方式成功:
for (( i=0 ; -e /file && i < 10 ; i++ ))
当然,我尝试了任何括号组合,例如:
for (( i=0 ; [ -e /file ] && [ i < 10 ] ; i++ ))
for (( i=0 ; [ -e /file -a i < 10 ] ; i++ ))
这有什么问题?我为此搜索了很多,但没有找到任何建议。
我尝试使用 2 个条件进行 for 循环,但我没有以任何方式成功:
for (( i=0 ; -e /file && i < 10 ; i++ ))
当然,我尝试了任何括号组合,例如:
for (( i=0 ; [ -e /file ] && [ i < 10 ] ; i++ ))
for (( i=0 ; [ -e /file -a i < 10 ] ; i++ ))
这有什么问题?我为此搜索了很多,但没有找到任何建议。
你必须做一些子shell技巧来完成这个:
for (( i=0 ; $([ -e /file -a $i -lt 10 ]; echo "$?") == 0; i++ ))
或者可能更好:
for (( i=0 ; $([ -e /file ]; echo "$?") == 0 && i < 10; i++ ))
这里发生的$(...)
是正在运行并放入数学表达式... == 0
中。当它运行echo "$?"
时,返回代码为[
0 表示无错误(即表达式为真),1 表示错误(即表达式为假),然后插入为0 == 0
or 1 == 0
。