shell

串行执行程序 && ||

  1. command1 ; commond2 执行完1在执行2
  2. commond1 && commond2 如果cmd1执行成功($?=0),则开始执行cmd2,如果cmd1执行错误($?=1),则不执行cmd2
  3. cmd1 || cmd2 如果cmd1执行错误($?=1),才执行cmd2 ,否则不执行cmd2

test命令

在11.15课程总结部分已经给出,这里就不再赘述。

exit()命令

exit 退出当前shell
Linux exit命令用于退出目前的shell。
执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
0    执行成功
1    执行失败
$?    参照上一个状态值

linux脚本: if语句

if [expression] then;
    comd
elif [expression] then ;
    commd
else 
    commd
fi
if和then写在同一行时,需要分号分隔。分号是 Bash 的命令分隔符。它们也可以写成两行,这时不需要分号。

Bash 还提供了((...))作为算术条件,进行算术运算的判断。

if ((3 > 2)); then
  echo "true"
fi

case结构

case结构用于多值判断,可以为每个值指定对应的命令,跟包含多个elif的if结构等价,但是语义更好。它的语法如下。

case expression in
  pattern1 )
    commands ;;
  pattern2 )
    commands ;;
  pattern3 )
    commands ;;
  *) 
    commands ;;
最后一条匹配语句的模式是*,这个通配符可以匹配其他字符和没有输入字符的情况,类似if的else部分
  ...
esac

例子:

echo -n "输入一个1到3之间的数字(包含两端)> "
read character
case $character in
  1 ) echo 1
    ;;
  2 ) echo 2
    ;;
  3 ) echo 3
    ;;
  * ) echo 输入不符合要求
esac

while 循环

while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。

while condition; do
  commands
done

上面代码中,只要满足条件condition,就会执行命令commands。然后,再次判断是否满足条件condition,只要满足,就会一直执行下去。只有不满足条件,才会退出循环。
循环条件condition可以使用test命令,跟if结构的判断条件写法一致。

while true
do
  echo 'Hi, while looping ...';
done

for 循环

for…in 循环
for…in循环用于遍历列表的每一项。

for variable in list
do
  commands
done

上面语法中,for循环会依次从list列表中取出一项,作为变量variable,然后在循环体中进行处理。

关键词do可以跟for写在同一行,两者使用分号分隔。

for i in word1 word2 word3; do
  echo $i
done

for循环还支持 C 语言的循环语法。

for (( expression1; expression2; expression3 )); do
  commands
done

break,continue

Bash 提供了两个内部命令break和continue,用来在循环内部跳出循环。
break命令立即终止循环,程序继续执行循环块之后的语句,即不再执行剩下的循环。

select 结构

select结构主要用来生成简单的菜单。它的语法与for…in循环基本一致。

select name

[in list]

do commands done

Bash 会对select依次进行下面的处理。
select生成一个菜单,内容是列表list的每一项,并且每一项前面还有一个数字编号。
Bash 提示用户选择一项,输入它的编号。
用户输入以后,Bash 会将该项的内容存在变量name,该项的编号存入环境变量REPLY。如果用户没有输入,就按回车键,Bash 会重新输出菜单,让用户选择。
执行命令体commands。
执行结束后,回到第一步,重复这个过程。

let 命令

let命令声明变量时,可以直接执行算术表达式。

$ let foo=1+2
$ echo $foo
3

上面例子中,let命令可以直接计算1 + 2。

let命令的参数表达式如果包含空格,就需要使用引号。

$ let "foo = 1 + 2"

let可以同时对多个变量赋值,赋值表达式之间使用空格分隔。

$ let "v1 = 1" "v2 = v1++"
$ echo $v1,$v2
2,1

上面例子中,let声明了两个变量v1和v2,其中v2等于v1++,表示先返回v1的值,然后v1自增。

expr 计算器

expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。

expr 表达式
表达式说明:

用空格隔开每个项;
用反斜杠 \ 放在 shell 特定的字符前面; "\*"
对包含空格和其他特殊字符的字符串要用引号括起来
 > expr 14 % 9
 5
 > expr 10 + 10
 20
 > expr 1000 + 900
 1900
 > expr 30 / 3 / 2
 5
 > expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
 90
 > expr 30 * 3
 expr: Syntax error

$[] 计算

Shell $[] 的用法如下:

$[表达式]
$[5+3]
$[] 会对表达式进行计算,并取得计算结果。如果表达式中包含了变量,那么你可以加$,也可以不加。

bc 命令

bc是任意精度计算器语言,通常在linux下当计算器用。

它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
常用的运算:

+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 余数
实例:
通过管道符

$ echo "15+5" | bc
20

$ echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30

$ echo "10^10" | bc 
10000000000

$ echo "sqrt(100)" | bc
10

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注