shell自动化编程学习(一)

学习linux,shell是绕不过去的槛。以此记录学习,共勉。

一、Shell中的变量

1.1 系统变量

常用系统变量

$HOME、$PWD、$SHELL、$USER等

(1)查看系统变量的值

shell自动化编程学习(一)_第1张图片

(2)显示当前shell中所有变量 set

1.2 自定义变量

1.基本语法:

(1)声明变量:变量名=变量值

(2)撤销变量:unset 变量

(3)声明静态变量:readonly 变量(不能被unset)

2.变量定义规则

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

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

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

eg:

(1)定义变量A

(2)定义只读变量B

只读变量只能输出引用,无法进行更改操作,也无法unset

(3)默认变量无法进行数值运算

(4)变量值定义时有空格需要单引号和双引号

(5)可将变量提升为全局环境变量,能让其他shell程序使用

export 变量名

将D更改为全局变量

1.3 特殊变量:$n

1.基本语法

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

eg:新建sh文件,依次定义参数

shell自动化编程学习(一)_第2张图片

1.4 特殊变量:$#

1.基本语法

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

eg:获取输入参数的个数

shell自动化编程学习(一)_第3张图片

可以看到参数个数也打印出来了。

1.5 特殊变量:$*、$@

1.基本语法

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

$@(这个变量也代表命令行中的所有参数,但将每个参数区分)

主要区别:

当它们被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,以“$1 $2 … n” 的 形 式 输 出 所 有 参 数 ;

"$@" 会将各个参数分开,以“$1” “$2"…"n” 的形式输出所有参数。

1.6 特殊变量:$?

1.基本语法

$?(检查最后一次执行命令的返回状态。如果变量的值为0,证明上一个明明正确执行;如果变量非0,则证明上一个命令执行不正确了。)

二、运算符

1.基本语法

(1)“$((运算式))”或“$[运算式]”

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

注:expr运算符间要有空格

2.eg:

(1)普通运算

shell自动化编程学习(一)_第4张图片

(2)混合运算

需要用 ` ` 来嵌套运算

(3)用$计算

直接可以使用变量传值

三、条件判断

1.基本语法

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

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

2.常用判断条件

 (1)两个整数之间比较

= 字符串比较

-lt 小于(less than)          -le 小于等于(less equal)

-eq 等于(equal)             -gt 大于(greater than)

-ge 大于等于(greater equal)  -ne 不等于(not equal)

(2)按照文件权限进行判断

-r 有读的权限(read)          -w 有写的权限(write)

-x 有执行的权限(execute)

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

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

-e 文件存在 (existence)              -d 文件存在并且是一个目录

3.eg

(1)数值判断

(2)文件权限判断

(3)文件类型判断

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

四、流程控制

4.1 if判断

1.基本语法

if [ 条件判断表达式 ];then
    程序
fi

或者

if [ 条件判断表达式 ]
    then
        程序
fi

注意:

(1)[  条件判断表达式  ] 前后必须有空格

(2)if 后要有空格

2.eg

题:输入一个数字,如果是1,则输出“这是1”;如果是2,则输出“这是2”;如果是其它,则不输出。

shell自动化编程学习(一)_第5张图片

4.2 case语句

1.基本语法

case $变量名 in #case行尾必须为单词"in",每一个匹配模式必须以右括号“)”结束
    "值1")
        如果变量的值等于值1,则执行程序1
    ;; #双分号表示命令序列结束,相当于break
    "值2")
        如果变量的值等于值2,则执行程序2
    ;;
    ...
    *) #最后的“*)”表示默认模式,相当于default
    如果变量的值都不是以上的值,则执行此程序
    ;;
esac #case的结束语

2.eg

题:输入一个数字,如果是1,则输出“这是1”;如果是2,则输出“这是2”;如果是其它,则输出“其它”。

shell自动化编程学习(一)_第6张图片

4.3 for循环

1.基本语法1

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

eg:从1加到100

2.基本语法2

for 变量 in 值1 值2 值3...
    do
        程序
    done

eg:打印所有输入参数

4.4 while循环

1.基本语法

while [ 条件表达式 ]
    do
        程序
    done

从1加到100

shell自动化编程学习(一)_第7张图片

你可能感兴趣的:(Linux学习,Shell,linux,shell)