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

cap*_*ser 3 bash

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

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

if [[ -s $file ]] ; then 
   continue
fi 
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 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
Run Code Online (Sandbox Code Playgroud)

我们的输出是:

Starting iteration 0
Ending iteration 0
Starting iteration 1
  About to run :
  Just ran :
Ending iteration 1
Starting iteration 2
  About to run continue
Run Code Online (Sandbox Code Playgroud)

请注意,我们在运行后使其"结束" :,但在运行后不会continue.