linux shell脚本 && 和 ||及变量说明

时间:2021-12-02 02:38:20

一、&& 和|| 在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

[1]http://c.biancheng.net/cpp/view/2739.html