#### if条件测试语句
if条件语句的单分支结构由if、then、fi关键词组成。
![Image](https://box.kancloud.cn/30c5f4aeb18bb7035280021b096cc0ec_568x153.png)
如:判断/media/cdrom文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建整个目录。
vim mkcdrom.sh
\#!/bin/bash
DIR=”/media/cdrom”
if \[ ! -e $DIR \]
then
mkdir -p $DIR
fi
if条件语句的双分支结构由if、then、else、fi关键词组成。
![Image](https://box.kancloud.cn/fd8d10a3626670c770b23a4fe7d7cbe8_585x169.png)
如:判断某主机是否在线,根据返回值显示主机是否在线的信息
**ping命令 -c** **规定尝试的次数;-i定义每个数据包的发送间隔;-W定义等待超时时间**
vim chkhost.sh
\#!/bin/bash
ping -c 3 -I 0.2 -W 3 $1 &> /dev/null # $1表示的是第一个参数;&>是输出重定向
if \[ $? -eq 0 \]
then
echo “Host $1 is On-line.”
else
echo “Host $1 is Off-line.”
fi
执行:bash chkhost.sh 192.168.10.10(Host 192.168.10.10 is On-line.)
bash chkhost.sh 192.168.10.20(Host 192.168.10.20 is Off-line.)
if条件语句的多分支结构由if、then、elif、else、fi关键词组成。
![Image](https://box.kancloud.cn/315a0b0b57a4fd4ac43f3c9966f59f9b_579x246.png)
如:判断用户输入的分数在哪个成绩区间内,然后输出Excellent、Pass、Fail等提示信息。
read 是用来读取用户输入信息,接受赋值给后面的指定变量,-p显示一定的提示信息
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
执行:bash chkscore.sh
Enter your score(0-100): 88
88 us Excellent
#### for条件循环语句
for循环语句运行脚本一次性读取多个信息
![Image](https://box.kancloud.cn/03df9e1a0bff1d5b75e160a20e008a68_560x154.png)
如:从列表文件中(users.txt)读取多个用户,然后为其逐一创建用户账户并设置密码。
vim users.txt
andy
barry
carl
duke
eric
george
下面通过read读取用户输入密码赋值给PASSWD变量。然后逐一用“**id 用户名**”查看用户信息。
**/dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。**
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
判断列表中(ipadds.txt)的主机是否在线
vim ipadds.txt
192\.168.10.10
192\.168.10.11
192\.168.10.12
vim CheckHosts.sh
\#!/bin/bash
HLIST=$(cat ~/ipadds.txt) ($类似于反引号`命令`)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP $> /dev/null
if \[ $? -eq 0 \] ; then
echo “Host $IP is On-line.”
else
echo “Host $IP is Off-line.”
fi
done
#### while条件循环语句
while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句。
![Image](https://box.kancloud.cn/846130f7bbfb23b6cb247ad7b6d8c30a_608x151.png)
如:编写一个猜测数值大小的脚本Guess.sh
vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000) \#**(expr命令是取得结果)**
TIMES=0 #(统计次数)
echo “商品实际价格为0-999之间,猜猜看是多少?”
while true
do
read -p “请输入你您猜测的价格数目:”INT
**let TIMES++** # (次数自动累加)
if \[ $INT -eq $PRICE \] ; then
echo “恭喜您答对了,实际价格是$PRICE”
echo “您总共猜了 $TIMES 次”
exit 0
elif \[ $INT -gt $PRICE \] ; then
echo “太高了!”
else
echo “太低了!”
fi
done
#### case条件测试语句
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(\*)中所定义的默认命令。
![Image](https://box.kancloud.cn/c93b02e3f4f895f007fdacf4654d9b90_518x287.png)
如:提示用户输入一个字符并将其赋值给变量KEY,然后根据变量KEY的值向用户显示其值是字母、数字还是其他字符。
vim Checkkeys.sh
#!/bin/bash
read -p “请输入一个字符,并按ENTER键确认:”KEY
case “$KEY” in
\[a-z\]|\[A-Z\])
echo “您输入的是 字母。”
;;
\[0-9\])
echo “您输入的是 数字。”
;;
\*)
echo “您输入的是 空格、功能键或其他控制字符。”
esac
- 常用的RPM软件包命令
- 常见的Yum命令
- Linux开机过程
- Systemd初始化进程服务的劣势:
- system 与 system V init 的区别以及作用
- systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
- systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
- 主流 Linux 系统选择 Bash 解释器作为命令行终端主要有以下 4 项优势
- 常见执行Linux命令的格式:
- man命令中常用按键以及用途
- man命令帮助信息的接个欧以及意义
- 常用系统命令(10)
- 系统状态检测命令(8)
- 工作目录切换命令(3)
- 文本文件编辑命令(9)
- 文件目录管理命令(7)
- 打包压缩与搜索命令(3)
- 输入输出重定向
- 管道命令符
- 命令行的通配符
- 常用的转义字符
- 重要的环境变量
- Vim文本编辑器
- 编写Shell脚本
- 流程控制语句
- 计划任务服务程序
- 用户身份与文件权限
- 文件权限与归属
- 文件的隐藏属性
- 文件访问控制列表
- su命令与sudo服务
- 存储结构与磁盘划分
- 使用RAID与LVM磁盘阵列技术
- iptables与firewalld防火墙
- 使用SSH服务管理远程主机