shell基本语法

脚本以#!/bin/(指定解释器)通常以

#!/bin/bash

1.基本语法

1.定义变量: 变量=值

A=1

查看值echo A

2.撤销变量:unset 变量

3.声明静态变量:readonly B=3

注意,readon变量不能unset

2.变量定义规则

1.变量名称可以由字母,数字下划线组成,但不能以数字开头,环境变量建议大写

2.等号俩测不能有空格

3.在bash中,变量弄人类型都是字符串类型,无法直接进行数值运算

4.变量的值如果有空格,需要使用双引号或单引号括起来

5.把变量升级为全局变量,可供其他shell程序使用

3.特殊变量

1.基本语法

$n n为数字,$0代表脚本名称、$1-$9代表第一个到第九个参数,十以上的参数需要用大括号包含如${10}

$# 获取所有输入参数个数,常用于循环

$* 这个变量代表命令行中所有的参数,$*把所有参数看成一个整体

$@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$? 最后一次执行命令的返回状态,如果这个变量值为0,证明上一个命令正确执行,如果这个变量值非0(具体是哪个数,由命令自己决定)则证明上一个命令执行不正确

运算符

$((运算式)) 或 $[运算式]

expr +,-,\*,/,%加减乘除取余

注意使用expr运算符之间要有空格

2加3乘4算法

expr `expr 2 + 3` \* 4

符号点在键盘esc下面

条件判断

基本语法

[ condition ](注意condition前后要有空格)。

注意:条件非空即为true,[ atguigu ]返回true,[]返回false。

常用条件判断

(1〉两个整数之间比较。

=字符串比较,

-lt小于(less than)

-le小于等于(less equal) .

-eq等于( equal>

-g大于( greater than) .

-ge 大于等于(greater equal)

-ne不等于(Not equal )

.(2〉按照文件权限进行判断,

-r有读的权限(read)

-w有写的权限(write) .

-x有执行的权限( execute) .

(3)按照文件类型进行判断,

-f文件存在并且是一个常规的文件(file)

-e文件存在( existence)

-d文件存在并是一个目录( directory )

案例22是否大于等于23

$ [ 22 -ge 23 ]

$ echo $?

通过$?返回值为0,可判断出23大于等于22

(4)多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,表示上一条命令执行失败后,才执行下一条命令)。

流程控制

1.if判断

if[ 条件表达式 ];then

程序

fi

或者

if[ 条件表达式 ]

then

程序

fi

注意事项

[ 条件表达式 ],中括号和条件表达式必须有空格

if 后要有空格

2.case语句

case $变量名 in

"值1”)

如果变量的值等于值1,则执行程序1

;;

"值2")

如果变量值等于值2,则执行程序2

;;

(其他的变量值以此类推)

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

注意事项: .

1l) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

. 2)双分号“;;”表示命令序列结束,相当于java中的 break。.

3)最后的“*)”表示默认模式,相当于java中的 default。.

3.for循环

1)

for (( 初始值;循环控制条件;变量变化))

do

程序

done

案例从1加到100

#!/bin/bash

s=0

for ((i=0;i<=100;i++))

do

s=$[$s+$i]

done

echo $s

(结束)

2)

for 变量 in 值1 值2 值3...

do

程序

done

4.while循环

while [ 条件判断式 ]

do

程序

done

案例从一加到一百

s=0

i=1

while [ $i -le 100 ]

do

s=$[$ + $i]

i=$[$i + 1]

done

echo $s

read读取控制台输入

read(选项)(参数)

选项

-p: 指定读取值时的提示符

-t: 指定读取值是等待的时间(秒)

参数

变量:指定读取值的变量名

案例:提示七秒内,读取控制台输入的名称

#!/bin/bash

read -t 7 -p "enter your name in 7 seconds" NAME

echo $NAME

上一篇:在命令行循环执行


下一篇:No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a