&& 与 || 都是用來"組建"多个 command line 用的:
* command1 && command2 :其意思是 command1 只有在 返回值 为 0 (true) 的条件下执行。
* command1 || command2 :其意思是 command1 只有在 返回值 为 0 (false) 的条件下执行。
测试案例如下:
if ([ $answer = 'y' ]) then
dbaccess $1 < ../sql/load_data.sql &&
dbaccess $1 < ../sql/upd_null_to_zero.sql ;
# dbaccess $1 < ../sql/unload_data_to_unl.sql;
else
echo "Cancel."
exit
fi
以上shell中,若 load_data.sql 执行的结果如下:
846: Number of values in load file is not equal to number of columns.
847: Error in load file line 289075.
Error in line 1
Near character position 50
0 row(s) deleted.
8894 row(s) loaded.
0 row(s) deleted.
8894 row(s) loaded.
dbaccess $1 < ../sql/load_data.sql 执行完成后,shell 是不会执行 第二句的.
因 load_data.sql 中若只要有一句没有执行成功,dbaccess 这句就会返回false.
必须 load_data.sql 中所有的sql 执行成功了才会执行第二句.