shell脚本实战教程

1. 简介

Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。

在这里插入图片描述

# Shell 脚本 hello.sh
#!/bin/bash 
echo 'hello world!'

#! 告诉系统这个脚本需要什么解释器来执行。
文件扩展名 .sh 不是强制要求的。

2. Shell 变量

变量名可以由字母、数字、下划线组成,不能以数字开头,分为系统变量和自定义变量

​ 系统变量: H O M E 、 HOME、 HOMEPWD、$USER等,显示当前Shell中所有变量set
​ 环境变量: export 变量名=变量值
​ 自定义变量:

基本语法
	定义变量:	变量名=变量值,等号两侧不能有空格,变量名一般习惯用大写。
	删除变量:	unset 变量名.
	声明静态变量:	readonly 变量名,静态变量不能unset。
	使用变量:		  $变量名

将命令返回值赋给变量(重点)
	A=`ls` 		反引号,执行里面的命令
	A=$(ls) 	等价于反引号
  • 系统变量/预定义变量
$n$0 代表命令本身、$1-$9 代表第1到9个参数,10以上参数用花括号,如 ${10}$* :命令行中所有参数,且把所有参数看成一个整体。
$@ :命令行中所有参数,且把每个参数区分对待。
$# :所有参数个数。
$$ :当前进程的 PID 进程号。
$! :后台运行的最后一个进程的 PID 进程号。
$? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败。
  • 环境变量
    在这里插入图片描述

基本语法

  1. export 变量名=变量值,将 Shell 变量输出为环境变量。
  2. source 配置文件路径,让修改后的配置信息立即生效。
  3. echo $变量名,检查环境变量是否生效

3. 判断语句

3.1 if-else/if-elif-if(推荐)

# 1.if
if [ 条件判断式 ];then   
    程序   
fi

# 2.if-elif
if [ 条件判断式 ] then
    程序
elif [ 条件判断式 ] then
    程序
fi

#3.if-else-elif
if [ 条件判断式 ] then
    程序
else [ 条件判断式 ] then
    程序
elif [ 条件判断式 ] then
    程序
fi

3.2 条件判断式

  • 文件判断

在这里插入图片描述

  • 字符串判断
    在这里插入图片描述

  • 数字判断

在这里插入图片描述

  • 复杂逻辑

在这里插入图片描述

3.3 case

case $变量名 in
"值1")
如果变量值等于值1,则执行此处程序1
;;
"值2")
如果变量值等于值2,则执行此处程序2
;;
...省略其它分支...
*)
如果变量值不等于以上列出的值,则执行此处程序
;;
esac

3.4 案例

#!/bin/bash 

# 1.如果输入的参数大于60,输出“及格”,否则输出“不及格”。
if [[ $1 -ge 60 ]]; then
	echo "及格"
elif [[ $1 -le 60 ]]; then
	echo "不及格"
fi

# 2.判断是否存在文件类型
file="/Users/zhupeng/Desktop/shell.sh"
if [[ -d $file ]]; then
    echo "$file is directory!"
elif [[ -e $file ]]; then
    echo "$file is file!"
else 
	echo "$file is not regular file and directory"
fi

# 3.判断是周几
case $1 in
	"1" )
	echo "周一"
	;;
	"2" )
	echo "周二"
	;;
	* )
	echo "其他"
	;;
esac

4. 循环语句

# 1.while
while [ 条件判断式 ]
do
    程序
done 

# 2.for 语法1
for 变量名 in 值1 值2 值3...
do
    程序
done

# 3.for语法2
for ((初始值;循环控制条件;变量变化))
do
    程序
done

案例

#!/bin/bash 

# 1.打印命令行输入的参数
for i in "$*"; do
	echo "the arg is $i"
done
echo "==========="

for i in "$@"; do
	echo "the arg is $i"
done

# 2. 输出从1加到100的值
SUM=0
for (( i = 0; i < 100; i++ )); do
	SUM=$[$SUM+$i]
done
echo $SUM

# 3.读取控制台输入
read -p "请输入一个数num1=" NUM1
echo "你输入num1的值是:$NUM1"

read -t 10 -p "请在10秒内输入一个数num2=" NUM2
echo "你输入num2的值是:$NUM2"

5. function函数

[ function ] funname[()]
{
    Action;
    [return int;]
}

# 调用
funname 参数1 参数2...

案例

#!/bin/bash 

# 1.计算终端输入的参数之和
read -p "请输入第一个参数n1:" n1
read -p "请输入第二个参数n2:" n2

function getSum(){
    SUM=$[$n1+$n2]
    echo "sum=$SUM"
}   
getSum $n1 $n2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr朱墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值