shell脚本基础

C语言属于编译性、强类型语言,
而shell是解释性语言,即不需要编译直接能运行。也是弱类型语言

命令,shell,shell脚本的区别

1.命令:用户根据需求给内核的指令。
2.shell:指令解释器,依附于终端的一个进程,将指令解释给内核的交互进程。
3.shell脚本:多个指令的集合。

创建一个shell脚本

1.创建一个.sh文件。
2.开头:第一行#!+参数。(参数是用来告诉系统用哪个程序来执行文件)
3.运行时没有执行权限,需要给这个.sh文件添加可执行权限权限。
4.运行这个.sh文件。
注意:第一行必须时#! + 参数。注释行前加#表示注释

shell变量

shell 允许用户建立 变量存储数据,但它不支持数据类型。

变量类型
1.用户自定义变量。

  1. 注意:
    1.任何赋值给变量的值都被shell解析成字符串。
    2.shell中字符串单引号和双引号都行。
    3.echo命令自带换行,要想不换行使用echo -n 在这里插入图片描述
    4.=两边不能有空格

2.位置参数即命令行参数。

  1. 位置参数是由系统提供的参数。用$N(N表示一个数字)
  2. 在这里插入图片描述
    在这里插入图片描述
    3、变量在这里插入图片描述

3.预定义变量。

  1. $#:包含命令行参数的个数。(不包含.sh)
  2. $@:包含所有命令行参数。
  3. $?:包含前一个命令的退出状态。正常退出为0,否则为非零值。(在shell中0为真,反之为假)
  4. $$:包含正在执行进程的ID号。
  5. $*:包含所有命令行参数。在这里插入图片描述

4.环境变量。

  1. env:查看所有环境变量。

命名规范
1.由字母数字下划线组成,开头不能是数字。
2.不能使用标点符号。
3.尽量见名知意。变量一般用大写字母表示

在这里插入图片描述

shell程序和语句

说明性语句
1.#表示注释。

功能性语句
1.输出语句:echo
2.输入语句:read
在这里插入图片描述
或者
在这里插入图片描述
该方法的双引号两边必须有空格

3.算术运算:expr (只能进行简单整数的运算)
在这里插入图片描述
运算符两边必须有空格隔开
写乘法时注意用 \*转义,避免让计算机误解成通配符

在这里插入图片描述

4.test命令

  1. 可以测试 字符串 、整数、文件属性。(主要是用来测试文件属性的)

  2. 字符串测试:

    1. s1 = s2 :测试两字符串的内容是否完全一样。
    2. s1 != s2 :测试两字符串是否有差异。
    3. -z s1 : 测试s1字符串的长度是否为0
    4. -n s1 : 测试s1字符串的长度是否不为0
      在这里插入图片描述
      $?表示上一条语句的退出状态,注意shell中0为真
      在这里插入图片描述
      也可以用 [ ] 代替test,注意 [ ] 符号两边都需要空格隔开
  3. 测试整数:

    1. a -eq b :测试a与b是否相等;
    2. a -ne b :测试a与b是否不相等;
    3. a -gt b : 测试a是否大于b;
    4. a -ge b: 测试a是否大于等于b;
    5. a -lt b : 测试a是否小于b;
    6. a -le b : 测试a是否小于等于b;
  4. 文件属性:

    1. -d name :测试name是否为一个目录。
    2. -f name :测试name是否为普通文件。
    3. -L name :测试name是否为链接文件。
    4. -r name : 测试name是否为存在且可读。
    5. -w name :测试name是否为存在且可写。
    6. -s name :测试name是否存在且长度不为0;
    7. -x name :测试name是否存在且可执行。
    8. f1 -nt f2 :测试文件f1是否比f2文件更新。
    9. f1 -ot f2 :测试文件f1是否比f2文件更旧。

5.结构性语句

  1. 条件测试语句:
 if [ 表达式1 ] 
 	then 语句1
 elif [ 表达式2 ]
 	then 语句2
 else
 	then 语句n
 fi

在这里插入图片描述

  1. case语句
case 字符串变量 in   #(case语句只能检测字符串变量)
	模式1) 
		命令1
		;;		#(类似与C语言中的break,但是这里的不能省略)
	模式2)
		命令2
		;;
	模式3)
		命令3
		;;    #(最后一个case的;;可以省略)
 esac
  1. 循环语句(break和continue作用同C语言一样)(增强:break 2结束两层 break 3结束3层以此类推 continue 同理)

在这里插入图片描述

for 变量名 in 列表
do
	命令表
done

#列表可以枚举也可以写范围
#范围(注意 {} 里面不能有变量)
for i in {1..10}  #这里必须是两个 "." 表示 1-10
do
	echo $i
done

#有步长
for i in {1..10..2} #步长为2
do
	echo $i		#打印 1 3 5 7 9
done

#枚举
for i in 1 2 3 4 5  a b c
do
 	echo $i  #打印1 2 3 4 5 a b c
done
while 命令或表达式
do
	命令表
done

在这里插入图片描述

shell函数

1.函数可用return语句将函数执行结果返回给调用者。

#方式一
function_name()
{
	命令表
}

#方式二(常用)
function function_name()
{
	命令表
}

#调用函数
#方式1(一般常用)
function_name [参数1 参数2 ···]
echo $?   #通过$?取上一句的结果

#方式2
value=`function_name [参数1 参数2 ···]` #将函数的返回值赋值给value
										#反引号中的内容当作命令处理

在这里插入图片描述
在这里插入图片描述

shell之间的调用

在shell中直接执行其他shell脚本即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值