Shell脚本-概览

kikujiro 发布于 2022-05-18 938 次阅读


1.交互式:用户每输入一条命令就立即执行

2.批处理:由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中的诸多文件。

第一个批处理式shell脚本

vim zy.sh

#!/bin/bash 使用哪种shell解释器来执行该脚本

#first example

pwd

ls -al

运行shell脚本的两种方式

  1. bash zy.sh
  2. ./example zy.sh

第一个交互式shell脚本

$0 对应的是当前Shell脚本程序的名称

$# 对应的是总共有几个参数

$* 对应的是所有位置的参数值

$? 对应的是显示上一次命令的执行返回值

$1、$2、$3....则分别#!/bim/bash

例子

#第一个交互式shell脚本 echo "当前脚本的名称为$0" echo "总共有$#个参数,分别是$*" echo "第一个参数值为$1,第5个参数值为$5"对应着第N个位置的参数值

运行截图如下

判断用户的参数

条件测试语句的执行格式

image-20200320120810421]

条件成立则返回数字0,否则便返回其他随机数值。

分为四种:

  1. 文件测试语句;
  2. 罗技测试语句
  3. 整数值比较语句
  4. 字符串比较语句

文件测试所用的参数

运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

eg: [ -f /etc/fstab]

 echo $?>

与或非

||或命令 ||前命令执行成功才会执行后面的命令

&&与命令 &&前命令执行失败才会执行后面的命令

!非命令 !取反

eg: [ ! $USER = root] && echo "user" || echo "root "  

整数比较运算符

可用的整数比较运算符

运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

字符串比较运算符

常见的字符串比较运算符

运算符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空

流程控制语句

  1. if
  2. for
  3. while
  4. case

if

单分支的if语句

eg:

vim 123.sh

#!/bin/bash

DIR="/media/cdrom"

if [ ! -e $DIR ]

then

mkdir -p $DIR

fi

if双分支结构

通过-c参数来规定尝试的次数,并使用-i参数定义每个数据包的发送间隔,以及使用-W参数定义等待超时时间。

[root@linuxprobe ~]# vim chkhost.sh

#!/bin/bash

ping -c 3 -i 0.2 -W 3 $1 &> /dev/null

if [ $? -eq 0 ]

then

echo "Host $1 is On-line."

else

echo "Host $1 is Off-line."

fi

if多分支结构

[root@linuxprobe ~]# vim chkscore.sh

#!/bin/bash

read -p "Enter your score(0-100):" GRADE

if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then

echo "$GRADE is Excellent"

elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then

echo "$GRADE is Pass"

else

echo "$GRADE is Fail"

fi

[root@linuxprobe ~]# bash chkscore.sh

Enter your score(0-100):88

88 is Excellent

[root@linuxprobe ~]# bash chkscore.sh

Enter your score(0-100):80

80 is Pass

for条件循环语句

eg:

[root@linuxprobe ~]# vim Example.sh

#!/bin/bash

read -p "Enter The Users Password : " PASSWD

for UNAME in cat users.txt

do

id $UNAME &> /dev/null

if [ $? -eq 0 ]

then

echo "Already exists"

else

useradd $UNAME &> /dev/null

echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null

if [ $? -eq 0 ]

then

echo "$UNAME , Create success"

else

echo "$UNAME , Create failure"

fi

fi

done

此作者没有提供个人介绍
最后更新于 2022-05-18