预定义变量表示形式:
1、接昨天学的内容,可以通过输入信息,并对变量赋值,执行相应的命令。
输入1,开启httpd服务;输入0,关闭httpd服务。
结果截图如下:
shell脚本如下:
case $1 in
1)
systemctl start httpd.service
echo -e "\033[37;32;5mhttpd start....\033[39;49;0m"
#echo -e '\e[1;41mhttpd start....\e[0m'
echo
systemctl status httpd.service
;;
0)
systemctl stop httpd.service
echo -e "\033[37;31;5mhttpd stop....\033[39;49;0m"
# echo 'httpd stop...'
echo
systemctl status httpd.service
;;
esac
自己加了一个字体颜色和闪烁效果。开启httpd,绿色字体并闪烁;关闭httpd,红色字体并闪烁。
2、shell脚本不具备直接数字计算的功能。比如要计算10+20,书写shell脚本如下:
#! /bin/bash
#a.sh
#yangshuo
echo $1+$2
执行结果是:
[root@localhost yangshuo-test]# ./a.sh 10 20
10+20
正确的进行加减乘除运算的实现方法:
A、shell脚本是:
echo $(($1+$2))
执行结果:
[root@localhost yangshuo-test]# ./a.sh 10 20
30
B、expr
expr $1 + $2
以上方法都是shell的位置变量。
下面看看预定义变量:
还是上个问题,数字求和。如果我有多个数字怎么求和。可以使用for循环,脚本如下:
[root@localhost yangshuo-test]# cat a.sh
#! /bin/bash
#a.sh
#yangshuo
tot=0
for i in $*;
do
tot=$(($tot+$i))
done
运行结果如下:
[root@localhost yangshuo-test]# ./a.sh 1 2 3 4 5 6 7 8 9 10
55
$?,返回执行结果,如果是0表示执行成功,如果不是0表示执行失败。举个例子:
执行ls预计,返回执行记过,shell脚本如下:
ls
if [[ $? == 0 ]]; then
echo -e '\e[1;32m上条命令执行成功\e[0m'
else
echo -e '\e[1;31m上条命令执行失败\e[0m'
fi