系统预定义变量
echo $* #所有传递的位置参数:
echo $@ #所有传递的位置参数:
echo $# #共传递的参数数量
echo $$ #当前程序运行的PID:
echo $? #返回上一个命令执行的返回结果为0时代表上一个命令成功其他为错误
-
举例
vi test.sh
#!/bin/bash
echo $*
echo $@
./test.sh 2 34 535 54 35 345
2 34 535 54 35 345 #返回的值所有传递的位置参数
2 34 535 54 35 345 #返回的值所有传递的位置参数
vi test.sh
#!/bin/bash
echo $#
./test.sh 2 34 535 54 35 345
6 #返回的值总共传递的参数数量
vi test.sh
#!/bin/bash
echo $$
./test.sh
6667 #返回的值脚本本身pid
ls -l
总用量 8
-rw-------. 1 root root 2829 6月 7 18:25 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 6月 7 18:28 Desktop
drwxr-xr-x. 2 root root 6 6月 7 18:28 Documents
drwxr-xr-x. 2 root root 6 6月 7 18:28 Downloads
drwxr-xr-x. 2 root root 6 6月 7 18:28 Music
-rw-------. 1 root root 2109 6月 7 18:25 original-ks.cfg
drwxr-xr-x. 2 root root 6 6月 7 18:28 Pictures
drwxr-xr-x. 2 root root 6 6月 7 18:28 Public
drwxr-xr-x. 2 root root 6 6月 7 18:28 Templates
drwxr-xr-x. 2 root root 6 6月 7 18:28 Videos
echo $?
0 #上条命令为真
变量赋值
#read -p 交互方式变量赋值
vi test.sh
#!/bin/bash #开头
read -p "请输入第一个值:" num1 #第一条read命令
read -p "请输入第二个值:" num2
sum=$((num1 + num2)) #引用通过read赋值的num1跟num2
echo "$num1 + $num2 = $sum"
./test.sh
请输入第一个值:4 #返回结果
请输入第二个值:8 #返回结果
4 + 8 = 12 #返回结果
if比较
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
举例
vi read3.sh
#!/bin/bash
read -p "请输入需要检测的ip地址:"IP #交互方式指定ip
ping -w1 -c1 ${IP} &> /dev/null #-c指定包的数量,-w为等待时间秒为单位 &>:混合输出至
#/dev/null:系统自带垃圾箱
if [ $? -eq 0 ];then #if [];then 条件,then满足时返回
#$? -eq 0 $?返回的值等于0
echo "${IP} 可以通信" #满足$? -eq 0时返回
else #不满足上面条件时
echo "${IP} 无法通信"
fi
CAT菜单
例
#!/bin/bash
cat << END
1) 启动nginx
2) 停止nginx
3) 查看nginx状态
END
当运行上面脚本时,将在界面上返回|1|2|3三个选项
简单利用从而实现启停nginx
#!/bin/bash
cat << END
1) 启动nginx
2) 停止nginx
3) 查看nginx状态
END
read -p "请输入您要选择的序号" sel
if [ ${sel} -eq 1 ];then #当$sel为1时运行以下命令
sudo systemctl start nginx
echo "nginx已启动"
fi
if [ ${sel} -eq 2 ];then #当$sel为2时运行以下命令
sudo systemctl stop nginx
echo "nginx已关闭"
fi
if [ ${sel} -eq 3 ];then #当$sel为3时运行以下命令
echo "nginx状态如下$(sudo systemctl status nginx|head -3|tail -1|awk '{print $2}')"
fi
创作不易 觉得不错留下三连