一、&& 和|| 在shell脚本中用于命令执行控制的功能。
例如:当下一个执行的命令依赖于上一个命令执行的结果时,可以通过&&和||实现。
语法格式:
command1 && command2 [&& command3 …]
command1 || command2 [|| command3 …]
1、命令之间使用 && (||)连接,实现逻辑与(或)的功能。
2、对于&&,只有在 && 左边的命令返回真的情况下,&& 右边的命令才会被执行。只要有一个命令为假,后面的命令都不会执行,即:短路的功能 。
3 、对于||有点不同于常规语法的“或“的功能,它是表示:只有在 || 左边的命令返回假,|| 右边的命令才会被执行。但是,只要有一个命令返回真,后面的命令就不会被执行,即:一直会运行到返回为真的命令时才会停止执行。
二、linux脚本运行时常会用到一些变量,大致如下:
$$:Shell本身的PID(ProcessID)
$!:Shell最后运行的后台Process的PID
$?:最后运行的命令的结束代码(返回值)
$-:使用Set命令设定的Flag一览
$*:所有参数列表。用”$1” “$2” … “$n” 来获取参数值。
$@:所有参数列表。用”$1” “$2” … “$n” 来获取参数值。
$#:添加到Shell的参数个数
$0:Shell本身的文件名
$1~$n:添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
e.g.:#!/bin/bash
echo “File Name: $0”;
echo “First Parameter : $1”;
echo “First Parameter : $2”;
echo “Quoted Values: $@”;
echo “Quoted Values: $*”;
echo “Total Number of Parameters : $#”
运行结果:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
三、 ∗和 @ 的区别
∗和 @ 都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,都以” 1"" 2” … “$n” 的形式输出所有参数。
但是当它们被双引号(” “)包含时,” ∗"会将所有的参数作为一个整体,以" 1 2… n”的形式输出所有参数;” @"会将各个参数分开,以" 1” “ 2"…" n” 的形式输出所有参数。
e.g.:#!/bin/bash
echo “$*=”
∗echo“\”$∗\”=”“
*”
echo “$@=” @echo“\”$@\”=”“ @”
echo “print each param from $*”
for var in
∗doecho“
var”
done
echo “print each param from $@”
for var in
@doecho“
var”
done
echo “print each param from \”$*\””
for var in “
∗”doecho“
var”
done
echo “print each param from \”$@\””
for var in “
@”doecho“
var”
done
执行 ./test.sh “a” “b” “c” “d”,看到下面的结果:
∗=abcd“
*”= a b c d
@=abcd“
@”= a b c d
print each param from
∗abcdprinteachparamfrom
@
a
b
c
d
print each param from “
∗”abcdprinteachparamfrom“
@”
a
b
c
d