条件语句中continue和冒号之间的区别

时间:2018-03-15 20:54:49

标签: bash

使用冒号有什么区别,这意味着"什么都不做"并继续,这意味着跳过。

if [[ -s $file ]] ; then 
    : 
fi 

if [[ -s $file ]] ; then 
   continue
fi 

2 个答案:

答案 0 :(得分:7)

:true的同义词。它不会阻止同一块或循环中的后续命令运行。

比较

for (( i=0; i<3; i++ )); do
  echo "Starting iteration $i"
  (( i == 1 )) && { echo "  About to run :"; :; echo "  Just ran :"; }
  (( i == 2 )) && { echo "  About to run continue"; continue; echo "  Just ran continue"; }
  echo "Ending iteration $i"
done

我们的输出是:

Starting iteration 0
Ending iteration 0
Starting iteration 1
  About to run :
  Just ran :
Ending iteration 1
Starting iteration 2
  About to run continue

请注意,我们已经结束了&#34;结束&#34;运行:之后,而不是在运行continue之后。

答案 1 :(得分:2)

这取决于你的程序的逻辑。

在循环之外你得到

$ continue
bash: continue: only meaningful in a `for', `while', or `until' loop