语法特点总结
- 在大多数情况不需要 ;结尾
- shell脚本编程的空格非常重要,这和Linux的语法也有一定的关系。
- ? #!/bin/bash 的作用?
#!/bin/bash 是 Shell 脚本的第一行。
它的意思是命令通过 /bin/bash 来执行
if 语句示例:
if [条件1]; then表达式1elif [条件2];then表达式2else表达式2fi
if 判断目录、文件
#/bin/bash#auto testfile#by authors guoqi 2020DIR=/tmp/20200714if [ ! -d $DIR ];thenmkdir -p $DIRecho\"this $DIR creat success!\"elseecho -e \"\\033[32mthis $DIR is exist,please exit!\\033[0m\"fiFILES=/tmp/testfile.txtif [ ! -f $FILES ];thenecho \"OK\" >> $FILESelseecho -e \"\\033[32m-------------------\\033[1m\"cat $FILESfi
if 实现 switch
#/bin/bash#auto test switch use if esle#author by guoqi#scores=90scores=$1# -z 判断输入是否为空if [ -z $scores ];thenecho \"usage:{$0 60|80}\"exitfi# gt >if [[ $scores -gt 85 ]];thenecho \"very good\"elif [[ $scores -gt 75 ]];thenecho \"good\"elif [[ $scores -gt 60 ]];thenecho \"you pass\"else echo \"no pass\"fi
while 循环语句
while [条件]:do表达式done
#!/bin/bash# 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,# 猜小了或猜大了,直至用户猜对脚本结束。# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数# 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]echo \"$num\"# 使用 read 提示用户猜数字# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),# ‐lt(小于),‐le(小于等于)while :doread -p \"计算机生成了一个 1‐100 的随机数,你猜: \" caiif [ $cai -eq $num ]thenecho \"恭喜,猜对了\"exitelif [ $cai -gt $num ]thenecho \"Oops,猜大了\"elseecho \"Oops,猜小了\"fidone
#!/bin/bash# 实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员# 提取根分区剩余空间disk_size=$(df / | awk \'/\\//{print $4}\')# 提取内存剩余空间mem_size=$(free | awk \'/Mem/{print $4}\')while :do# 注意内存和磁盘提取的空间大小都是以 Kb 为单位if [ $disk_size -le 512000 -a $mem_size -le 1024000 ]thenmail ‐s \"Warning\" root <<EOFInsufficient resources,资源不足EOFfidone
for 循环语句
for 变量 in 循环列表do表达式1done
#!/bin/bash# 9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)for i in `seq 9`dofor j in `seq $i`doecho -n \"$j*$i=$[i*j] \"doneechodone
一键部署安装LNMP
#!/bin/bash# 一键部署 LNMP(源码安装版本)menu(){clearecho \" ##############‐‐‐‐Menu‐‐‐‐##############\"echo \"# 1. Install Nginx\"echo \"# 2. Install MySQL\"echo \"# 3. Install PHP\"echo \"# 4. Exit Program\"echo \" ########################################\"}choice(){read -p \"Please choice a menu[1‐9]:\" select}install_nginx(){id nginx &>/dev/nullif [ $? -ne 0 ];thenuseradd -s /sbin/nologin nginxfiif [ -f nginx‐1.8.0.tar.gz ];thentar -xf nginx‐1.8.0.tar.gzcd nginx‐1.8.0yum -y install gcc pcre‐devel openssl‐devel zlib‐devel make./configure ‐‐prefix=/usr/local/nginx ‐‐with‐http_ssl_modulemakemake installln -s /usr/local/nginx/sbin/nginx /usr/sbin/cd ..elseecho \"没有 Nginx 源码包\"fi}install_mysql(){yum -y install gcc gcc‐c++ cmake ncurses‐devel perlid mysql &>/dev/nullif [ $? -ne 0 ];thenuseradd -s /sbin/nologin mysqlfiif [ -f mysql‐5.6.25.tar.gz ];thentar -xf mysql‐5.6.25.tar.gzcd mysql‐5.6.25cmake .makemake install/usr/local/mysql/scripts/mysql_install_db ‐‐user=mysql ‐‐datadir=/usr/local/mysql/data/‐‐basedir=/usr/local/mysql/chown -R root.mysql /usr/local/mysqlchown -R mysql /usr/local/mysql/data/bin/cp -f /usr/local/mysql/support‐files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqld/bin/cp -f /usr/local/mysql/support‐files/my‐default.cnf /etc/my.cnfecho \"/usr/local/mysql/lib/\" >> /etc/ld.so.confldconfigecho \'PATH=\\$PATH:/usr/local/mysql/bin/\' >> /etc/profileexport PATHelseecho \"没有 mysql 源码包\"exitfi}install_php(){#安装 php 时没有指定启动哪些模块功能,如果的用户可以根据实际情况自行添加额外功能如‐‐with‐gd 等yum -y install gcc libxml2‐develif [ -f mhash‐0.9.9.9.tar.gz ];thentar -xf mhash‐0.9.9.9.tar.gzcd mhash‐0.9.9.9./configuremakemake installcd ..if [ ! ‐f /usr/lib/libmhash.so ];thenln -s /usr/local/lib/libmhash.so /usr/lib/fildconfigelseecho \"没有 mhash 源码包文件\"exitfiif [ -f libmcrypt‐2.5.8.tar.gz ];thentar -xf libmcrypt‐2.5.8.tar.gzcd libmcrypt‐2.5.8./configuremakemake installcd ..if [ ! -f /usr/lib/libmcrypt.so ];thenln -s /usr/local/lib/libmcrypt.so /usr/lib/fildconfigelseecho \"没有 libmcrypt 源码包文件\"exitfiif [ -f php‐5.4.24.tar.gz ];thentar -xf php‐5.4.24.tar.gzcd php‐5.4.24./configure ‐‐prefix=/usr/local/php5 ‐‐with‐mysql=/usr/local/mysql ‐‐enable‐fpm ‐‐enable‐mbstring ‐‐with‐mcrypt ‐‐with‐mhash ‐‐with‐config‐file‐path=/usr/local/php5/etc ‐‐with‐mysqli=/usr/local/mysql/bin/mysql_configmake && make install/bin/cp -f php.ini‐production /usr/local/php5/etc/php.ini/bin/cp -f /usr/local/php5/etc/php‐fpm.conf.default /usr/local/php5/etc/php‐fpm.confcd ..elseecho \"没有 php 源码包文件\"exitfi}while :domenuchoicecase $select in1)install_nginx;;2)install_mysql;;3)install_php;;4)exit;;*)echo Sorry!esacdone