shell脚本基础

目录

一、概述

二、shell

(一)shell命令解释环境

(二)类型

(三)查看系统中支持的shell:cat /etc/shells

(四)查看系统默认shell: echo $SHELL

三、变量

(一)变量组成

1、变量名

2、变量值

(二)变量类型

1、系统内置变量(环境变量)

2、自定义变量

(三)位置变量(脚本后参数所在的位置)

(四)预定义变量

(五)作用域

四、运算符——数学运算

(一)数学运算符

(二)运算方法

 (三)字符串运算

(四)$((a+b))        echo $((a+b))

(五)$[a+b]        echo $[a+b]

五、运算符——比较运算

(一)条件测试

1、test var1 比较符 var2

2、[ var1 比较符 var2 ]

3、举例

 4、&&

5、||

6、;​编辑

 7、举例

 (二)数值比较

(三)字符串比较

 (四)文件比较

(五)逻辑运算符

六、shell脚本编写规范

七、shell运行规则

(一)没有x权限

(二)有x权限

八、shell脚本运行追踪: bash -x 脚本所在路径/脚本文件

九、返回100内随机数

​编辑十、返回1到10 的连续数字

(一)echo   {1..10}

(二) seq 1 10

(三)返回1.1 2.1 3.1.... 10.1

十一、读取键盘输入并赋值给变量名

十二、语句——条件语句

(一)单分支if

(二)双分支if

 (三)多分支if

 十三、语句——循环语句

(一)for

1、格式

2、for循环由while循环演变

 3、举例:

(二)while

1、格式

2、举例:

(三)开关语句——case


一、概述

脚本就是将手动一次性执行的命令进行规范且自动化

二、shell

(一)shell命令解释环境

(二)类型

1、sh

2、ash

3、bsh

4、csh

5、bash

6、tcsh(国产默认)

7、dsh(苹果默认)

8、zsh

(三)查看系统中支持的shell:cat /etc/shells

(四)查看系统默认shell: echo $SHELL

三、变量

(一)变量组成

1、变量名

①不会变化(容器...)

②声明规范

不能是数字或数字开头
以_或字母开头
变量名中不能包含特殊字符

③声明方法

驼峰式:userName

双驼峰:UserName

shell写法:
    user_name
    username
    USERNAME

2、变量值

①不断变化

② 数字、字符

(二)变量类型

1、系统内置变量(环境变量)

查看环境变量:env

2、自定义变量

①varName=varValue

#等号两边不能有空格
②数字

var1=1

③字符串

#shell中可以不使用引号

#当包含有空格时,需要使用引号 

(三)位置变量(脚本后参数所在的位置)

共有九个,分别是:$1、$2、$3、$4、$5、$6、$7、$8、$9

(四)预定义变量

①$0:脚本本身的名称

②$#:脚本后参数的个数

③$*:脚本运行时参数的内容(整体输出)

④$@: 脚本运行时参数的内容(逐个输出)

⑤$?:脚本运行完毕后的返回值
默认情况:        0                成功
                          非0            失败

(五)作用域

①默认变量只在当前shell下生效

②若要在当前及其子shell下生效,需要声明为全局变量

export

四、运算符——数学运算

(一)数学运算符

1、+        相加

2、-         相减

3、*         相乘

4、/         相除

5、%        取余

(二)运算方法

1、expr

①expr $a + $b

②相加或相减

expr 10 + 5    # 输出 15

expr 10 - 5    # 输出 5

③相乘或相除

expr 10 \* 5    # 输出 50

#在进行相乘或者进行乘法的时候需要使用 \* 转义符,因为 * 本身在shell中表示通配符。

 (三)字符串运算

①expr length "mystring"        # 输出字符串长度:8

②expr substr "mystring" 2 3    # 输出字符串子串:yst

③expr index "mystring" r      # 输出字符所在位置:4

(四)$((a+b))        echo $((a+b))

(五)$[a+b]        echo $[a+b]

#注意:shell不支持浮点数的显示

shell脚本基础_第1张图片

shell脚本基础_第2张图片

 #echo  自带换行                                #echo   -n   取消换行

五、运算符——比较运算

(一)条件测试

1、test var1 比较符 var2

2、[ var1 比较符 var2 ]

3、举例

shell脚本基础_第3张图片

 4、&&

[ $a -ne $b ] &&  echo OK
条件 && 输出结果
条件为真输出,否则不输出

5、||

[ $a -ne $b ] ||  echo OK
条件 || 输出结果
条件为假输出,否则不输出

6、;
shell脚本基础_第4张图片

 7、举例

shell脚本基础_第5张图片

 (二)数值比较

1、-eq        等于

2、-ne        不等于

3、-lt         小于

4、-le        小于等于

5、-gt        大于

6、-ge        大于等于

(三)字符串比较

1、=                字符串一致

2、!=               字符串不一致

3、-z               字符串为空

4、!     -z        字符串不为空

5、举例
shell脚本基础_第6张图片    
 shell脚本基础_第7张图片   
  shell脚本基础_第8张图片  

 (四)文件比较

1、-e         文件或目录是否存在

2、-d        是否为目录

3、-f          是否为文件

4、-r          判断文件是否可读

5、-w         判断文件是否可写

6、-x         判断文件是否可执行

(五)逻辑运算符

1、&&        -a
表示并且,有假则假,全真为真
举例:[ -r 111 -a -w 111 -a -x 111 ]
           [ -r 111 ] && [ -w 111 ] &&  [ -x 111 ]

2、||        -o
表示 或者,有真则真,全假为假

3、!
表示取反,有真则假,有假则真

六、shell脚本编写规范

第一行        #!/bin/bash
第二行        #脚本的说明
第三行        脚本正文

七、shell运行规则

(一)没有x权限

1、bash  脚本所在路径/脚本文件

2、source 脚本所在路径/脚本文件

3、.      脚本所在路径/脚本文件

(二)有x权限

1、./脚本文件

2、脚本绝对路径/脚本文件

八、shell脚本运行追踪: bash -x 脚本所在路径/脚本文件

九、返回100内随机数

命令:echo    $[$RANDOM%100]

shell脚本基础_第9张图片
十、返回1到10 的连续数字

(一)echo   {1..10}

   

(二) seq 1 10

 shell脚本基础_第10张图片  

(三)返回1.1 2.1 3.1.... 10.1

seq 1.1 10.1

十一、读取键盘输入并赋值给变量名

命令:read -p "提示语" 变量名

十二、语句——条件语句

(一)单分支if

for 条件(i in 值)|((i=1;i<=10;i++))
do
    语句
done

举例:

shell脚本基础_第11张图片

(二)双分支if

if [ ];then
else
fi

举例:

shell脚本基础_第12张图片

 (三)多分支if

if [ ];then
elif [ ];then
else
fi

举例:

shell脚本基础_第13张图片

 十三、语句——循环语句

(一)for

1、格式

for 条件(i in 值)|((i=1;i<=10;i++))
do
    语句
done

2、for循环由while循环演变

shell脚本基础_第14张图片

 3、举例:

创建多个用户

 删除多个有规律的用户

九九乘法表

详见http://t.csdn.cn/KmbeB

(二)while

1、格式

i=1
while 条件
do
    语句
    let  i++
done

2、举例:

剪子包袱锤

猜大小

 详见http://t.csdn.cn/KmbeB

(三)开关语句——case

case $1 in
条件1)
    语句
;;
条件2)
    语句
;;
*)
    帮助信息
;;
esac

你可能感兴趣的:(bash,开发语言,linux,运维,服务器)