linux-shell编程基础(基本语法)

1 shell编程用途

通过终端编写脚本程序,辅助开发人员完成工程自动化操作

2 编写规范

  • 脚本程序是Unix/Linux系统中的特殊文件,需要妥善管理
  • 放在指定路径的scripts/目录下
  • 后缀名统一使用.sh
  • 第一行代码 #!/bin/bash 指定程序执行

3 执行方式

  • 通过命令执行
    • bash 文件名
    • sh 文件名
  • 直接执行(需要执行权限)
    • ./文件名

4 注释

  • 除第一行的#!/bin/bash,单行注释以 # 开头
  • 多行注释(多行注释方法较多,这里只是其中一种)
    • :<<自定义字符 注释内容 自定义字符

5 标准输出

  • 打印完换行
    • echo “要打印的信息”
  • 打印完不换行
    • echo -n “要打印的信息”
  • 可以不加双引号,但规范写法要添加

6 标准输入

  • 显示输入信息:
    • read -p “提示信息”
  • 不显示输入信息
    • read -s “提示信息”

7 变量

  • 命名规则
    • 遵循变量命名规则(见名知义、字母数字下划线组成、数字不能开头)
  • 赋值
    • 变量名=值
    • 两边不需要空格
# 可以用双引号也可以不用双引号
name=Jack 
  • 使用变量
    • 在变量名前面添加 $ 符号 "
    • 与其他字符串拼接使用 ${name}_001
echo "name:$name
echo "${name}_001"
  • 引号
    • 双引号-强引用:输出赋值
    • 单引号-弱引用:不输出赋值

8 选择结构

8.1 单分支结构

  • 判断表达式中符号的两端或**[ ]内两端**要有空格,赋值没有空格
if 条件
then
    条件为True执行的代码
fi

8.2 双分支结构

if [ 条件1 ];then
    条件1为True执行的代码
else
   条件不满足执行代码
fi

8.3 多分支结构

if [ 条件1 ];then
    条件1为True执行的代码
elif [ 条件2 ];then
    条件2为True执行的代码
elif ....
else
    任何条件都不满足执行的代码
fi

8.3 判断符号

8.3.1 文件判断
  • 判断文件是否存在 if [ -e 文件路径 ]
  • 判断是否文件 if [ -f 文件路径 ]
  • 判断是否文件夹 if [ -d 文件路径 ]
  • 判断文件是否可读 if [ -r 文件路径 ]
  • 判断文件是否可写 if [ -d 文件路径 ]
  • 判断文件是否可执行 if [ -x 文件路径 ]
8.3.2 字符串判断
  • 判断两个字符是否相等 if [ s1 = s2 ]
  • 判断两个字符是否不相等 if [ s1 != s2 ]
  • 判断字符串长度是否为0 if [ -z s ]
  • 判断字符串是否为空 if [ -n s ]
8.3.3 整数判断
  • 判断是否相等 [ num1 -eq num2 ]
  • 判断是否不相等 [ num1 -eq num2 ]
  • 判断是否大于 [ num1 -eq num2 ]
  • 判断是否小于 [ num1 -eq num2 ]
  • 判断是否大于等于 [ num1 -eq num2 ]
  • 判断是否小于等于 [ num1 -eq num2 ]
8.3.4 逻辑判断
  • 并且关系 [ a && b ] 或 [ a -a b ]
  • 或者关系 [ a || b ] 或 [ a -o b ]
  • 取反 [ ! a ]

8.4 case流程控制

case 变量 in
	变量1)
		代码1
        ;;
    变量2)
        代码2
        ;;
     *)
        全部都没有匹配成功的代码
        ;;
esac

9 循环结构

9.1 for循环

for 临时变量 in (数据组)
do 
循环执行代码
done

9.2 while循环

while 条件
do
 循环执行的代码
done

10 整数运算

  • 运算符号
    • 求和 num1 + num2
    • 求差 num1 - num2
    • 求积 num1 * num2 或 num1 * num2
    • 求商 num1 / num2
    • 取余 num1 % num2
  • 表达式
    • expr 表达式
      expr n u m 1 + num1+ num1+num2 # 操作符号两边不加空格是拼接
      expr $num1 + $num2 # 相加(其他运算同理)
      expr $num1 \ $num2* # expr乘法运算*不能直接使用,否则会报错,需要转义后才能相乘
    • $(()) 表达式,可以直接运算,可以赋值
      • res=$((num1 + num2))
    • $[] 表达式,可以直接运算,可以赋值
      • res=$[num1+num2]
    • let 关键字
 let i++
 let num+=1 

11 函数

11.1 函数声明

  • 标准语法
function 函数名称(){
	函数中的代码
}
  • 简洁方式
函数名称(){
   函数中的代码
}
  • shell中函数参数传递有自己的方式,不要在括号内添加形式参数

11.2 函数调用

  • 直接使用函数名称调用,后面不需要加()

11.3 函数传递

  • 参数不需要在函数内声明,直接通过函数获取
  • 调用函数的同时传递参数,参数直接放在函数名称后面,用空格分隔
函数名 参数1 参数2 参数3

11.4 函数返回值

  • $* 获取所有的参数
  • $@ 获取所有的参数
  • $# 获取参数的个数
  • $n 获取第n个参数
  • $? 获取上一个命令或五福执行结果,返回0,执行正常或服务运行中,返回1,执行不正常,返回3,服务已停止;返回4,服务不存在

12 命令替换

先完成 `` 里面的命令行,然后将其结果替换出来

`pwd`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值