系统预定义变量
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
创作不易 觉得不错留下三连