Linux基础——shell编程

目录

1、shell脚本基本要求

2、shell的变量

系统变量:

用户自定义变量:

环境变量:

位置参数变量:

预定义变量:

3、运算符

4、shell语法

1、条件判断if

2、条件判断case

3、for循环

4、while循环

5、read输入

4、shell的函数

系统函数:

自定义函数:


1、shell脚本基本要求

  • 脚本要以#!/bin/bash开头
  • 需要给shell脚本可执行的权限
  • 运行脚本的两种方式:
  1. 使用 ./脚本相对路径(需要在脚本所在目录下)或者直接使用脚本的绝对路径。(使用这种方式需要脚本有可执行权限)
  2. 使用sh 脚本绝对路径或相对路径。(这种方式不需要有可执行权限)
  • 注释的使用方式:
  1. 单句的注释使用#
  2. 段落的注释在开始注释的语句前一行使用:>>!,在结束注释的语句的下一行使用!,!可以换成其他的,但是要确保前后对应。

2、shell的变量

查看所有变量可以使用set

  • 系统变量:

                $HOME,$PWD,$SHELL,$USER等。

  • 用户自定义变量:

                (如果需要输出变量需要在变量前加上$,如果不加会认为是符号)

  1. 定义变量:变量=值(=号左右两边不能有空格)
  2. 撤销变量:unset 变量
  3. 声明静态变量:readonly 变量=值,不能被撤销
  4. 变量命名规则:变量名称可以使用字母、数字和下划线组成,但不能使用数字开头;变量名称一般使用大写。
  5. 将命令的返回值赋给变量:使用A=`data`(是反引号,不是单引号)或者使用A=$(data)
  • 环境变量:

           相当于是全局变量,使用export 变量=值,可以将该变量设置为环境变量。需要使用source 修改的文件才能将配置的信息立即生效。

  • 位置参数变量:

类似于c语言中的形参,能获得命令行给出的参数。

基本语法:

  • $n:n为数字,$0代表命令本身,其他的都表示参数,10以上要使用大括号,例如${10}
  • $*:表示命令行中所有的参数,把所有参数看成一个整体
  • $@:也可以表示命令行中所有的参数,把每个参数区分对待
  • $#:表示命令行中所有参数的个数
  • 预定义变量:

shell中已经设定好的变量,可以直接在shell脚本中使用。

基本语法:

  • $$:当前进程的PID号
  • $!:后台运行的最后一个进程的PID号
  • $?:最后一次执行的命令的返回状态,是0则表示上一个命令正确执行,否则为非0

3、运算符

三种使用运算符计算表达式的方式:

  1. $((运算式))
  2. $[运算式]
  3. expr m + n:运算符左右要有空格,如果想将结果赋给某个变量,需要用反引号。使用乘法时需要使用反斜杠\*,在使用到其他符号,如(),也需要使用反斜杠,且符号左右都需要有空格。

4、shell语法

1、条件判断if

  • 判断条件非空时返回ture,[ hspEdu ]:返回ture;[ ]:返回false。
  • 基本语法:
if [ 判断条件 ]
then
    执行代码
elif [ 判断条件 ]
    执行代码
    .
    .
    .
fi
  • 常用判断条件:
  •  = :用于字符串之间的比较
  • 两个整数之间的比较:
  1. -It:小于
  2. -Ie:小于等于
  3. -eq:等于
  4. -gt:大于
  5. -ge:大于等于
  6. -ne:不等于
  • 判断文件权限:
  1. -r读权限
  2. -w:写权限
  3. -x:可执行权限
  • 判断文件类型
  1. -f:文件存在并且是一个常规文件
  2. -e:文件存在
  3. -d:文件存在并且时一个目录

2、条件判断case

基本语法:

case $变量名 in
"值1")#变量值=值1
执行代码
;;
"值2")#变量值=值2
执行代码
;;
    .
    .
    .
*)#都不是以上的值
执行代码
;;
esac

3、for循环

  • 基本语法1:
for 变量 in 值1 值2 ... #将后面的值分别赋给变量,直到全部赋给变量循环停止,可使用位置参数变量
do
    执行代码
done
  • 基本语法2:
for ((初始值;循环控制条件;变量变化))
do
    执行代码
done

4、while循环

基本语法:

while [ 循环条件 ]
do
    执行代码
done

5、read输入

  • 基本语法:read [选项] [参数]
  • 选项:(可以连续使用)
  1. -p 提示符:指定读取时的提示符
  2. -t 时间:指定读取值时等待的时间

4、shell的函数

  • 系统函数:

1、basename函数:返回完整路径最后 /的部分。

基本语法:basename [pathname/string] [suffix]:删掉前缀包括最后一个/,然后将字符串显示出来,suffix为后缀,如果有指定,那后缀也会被去掉。

2、dirname函数:返回完整路径最后/前面的部分。

基本语法:dirname 文件绝对路径:删掉最后一个/后面的内(文件名),然后返回剩下的路径(目录的部分)。

  • 自定义函数:

基本语法:(不需要有形参列表 )

[ function ] funname[()]
{
    执行的代码
    [return int;]
}

funname [值]

传参方式:

  1. 直接传入参数:使用$号加数字,如$1,$2......,$0表示命令本身。
    #定义求和函数
    function GetSum()
    {
            SUM=$[$1+$2]
            echo SUM=$SUM
    }
    #输入
    read -p "请输入n1=" n1
    read -p "请输入n2=" n2
    #调用
    GetSum $n1 $n2
    
  2. 使用函数外定义的变量:在函数内只需按正常使用变量即可。
    #定义求和函数
    function GetSum()
    {
            SUM=$[$n1+$n2]
            echo SUM=$SUM
    }
    #输入
    read -p "请输入n1=" n1
    read -p "请输入n2=" n2
    #调用
    GetSum $n1 $n2
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值