shell环境变量
# 简单的变量介绍
lenn@DESKTOP-AEE32JA:~$ a=10
lenn@DESKTOP-AEE32JA:~$ echo $a
10
系统变量
系统变量主要是用于参数判断和命令返回值判断,有以下系统环境变量:
编写以下脚本获得输出:
echo $0
echo $1
echo $2
echo $*
echo $#
echo $?
echo $$
lenn@DESKTOP-AEE32JA:~$ ./sys.sh 123 "123"
./sys.sh
123
123
123 123
2
0
4913
系统环境变量
用户环境变量
用户变量又称为局部变量,主要用在 shell 脚本内部或者临时局部使用,比如:
A=10
BACK_DIR=/home/user/back
IPADDR=127.0.0.1
shell 流程控制
if 条件语句
if [ condition ]; then
# 如果条件为真,则执行的命令
elif [ another_condition ]; then
# 如果另一个条件为真,则执行的命令
else
# 如果所有条件都不满足,则执行的命令
fi
举例
#!/bin/bash
number=$1 # 从命令行参数获取数字
if [ $number -gt 0 ]; then
echo "$number 是正数"
elif [ $number -lt 0 ]; then
echo "$number 是负数"
else
echo "$number 是零"
fi
if 常见判断逻辑运算符
数值比较运算符
其他逻辑运算符
案例:判断 code-server 进程是否再运行
#!/bin/bash
name=code-server
num=$(ps -ef | grep $name | grep -vc grep)
if [ $num -eq 1 ];then
echo "$num running!"
else
echo "$num is not running!"
fi
案例:判断目录是否存在
#!/bin/bash
if [! -d /opt/code-server -a ! -d /tmp/code-server];then
mkdir -p /opt/code-server
fi
案例:按照人数判断规模
#!/bin/bash
num=$1
if [ $num -gt 500 ];then
echo "big company!"
elif [ $num -gt 100 ];then
echo "mid company!"
elif [ $num -gt 20 ];then
echo "small company!"
else
echo "unlaw num!"
fi
for 循环语句
for 变量名 in 取值列表; do
语句 1
done
案例:检查主机状态
#!/bin/bash
network=$1
for Host in $(seq 1 254);do
ping -c 1 $network.$Host > /dev/null && result=0 || result=1
if [ $result -eq 0 ];then
echo -e "\033[32;1m$network.$Host is up \033[0m"
else
echo -e "\033[;31m$network.$Host is down \033[0m"
fi
done
while 循环
while (表达式)
do
语句1
done
break 和 continue 语句
# break 和 continue 语句
break 是终止循环。
continue 是跳出当前循环。
#示例 1:在死循环中,满足条件终止循环
while true; do
let N++
if [ $N -eq 5 ]; then
break
fi
echo $N
done
输出: 1 2 3 4
#示例 2:举例子说明 continue 用法
N=0
while [ $N -lt 5 ]; do
let N++
if [ $N -eq 3 ]; then
continue
fi
echo $N
done
输出: 1 2 4
# 打印 1-100 数字
i=0
while ((i<=100))
do
echo $i
i=`expr $i + 1`
done
案例:求 1-100 的总和
#!/bin/bash
j=0
i=1
while ((i<=100));do
j=`expr $i + $j`
((i++))
done
echo $j
参考资料:https://it.0voice.com