shell脚本语句使用总结

一、编写一个shell
  bash -x  filename 可以查看执行过程的,可以用来排错。

  shell脚本是将完成一个任务的所有命令按照执行先后顺序,自上而下写到一个文本文件中,然后给与执行权限。

   例:安装一个nginx,vim一个文本文件,写入以下内容
    yum -y install wget gcc pcre-devel zlib-devel    (安装依赖先)
    wget http://nginx.org/download/nginx-1.16.0.tar.gz  (下载nginx)
    tar xf nginx-1.16.0.tar.gz (解压nginx包)
     cd nginx-1.16.0(进去目录)
	./configure --prefix=/usr/local(源码编译安装)
	make  -j 4(四个cpu运行)
	make install

	给予执行权限   chmod 700 文本文件名称          (切记权限不要给予777)
	当安装好,启动nginx不成功就要考虑一下防火墙有没有关闭。
	以上就是一个shell脚本简单的诠释。
二、shell脚本书写规范
 1、shell中要有以下的基本的规范:
 
 #是用于注释(在shell中不要写中文或者出现中文)
     1)定义脚本环境
          #!是定义脚本在哪个环境变量中运行,是特例
		2)脚本信息
		#脚本是那个人写的:Author
		#创建这个脚本的时间:Created Time
		#分发版本号: Release:1.0
		#描述清楚这个脚本是用于干嘛的 :Script Description: nginx
		
	3)脚本组成
		#解释环境   写法还有这些  #!/usr/bin/env bash  或者 python 或者 perl
		#注释说明
		#执行代码

2、运行脚本  

	~1 给执行权限         格式   chmod u+x filename
	~2解释器直接运行 ,不用给予权限   格式  bash filename

3、shell中特殊符号
		~  家目录               ! 执行历史命令   !!执行上一条历史命令
		$ 变量中取内容符  echo $hello
		+ - * / %  对应数学运算 加 减 乘 除 取余数
		&  后台运行
		*  星号是通配符  匹配所有
		? 问号也是通配符  匹配除回车以外的一个字符
		:是可以在shell中一行执行多个命令用分号隔开
		| 管道符 上一个命令的输出作为下一个命令的输入
		\ 转义字符
		‘’  反引号 命令中执行的命令
		‘’ 单引号脚本中字符串要用单引号引起来,不可以解释变量
		“”双引号出现字符串可以用双引号引起来

		> 重定向输入 覆盖原数据
		>> 重定向追加输入,在原始数据尾端添加
		<  重定向输出   wc -l < /ect/passwd
		<< 重定向追加输出  fdisk /dev/sdb <<EOF  、、、、、、、 EOF

		1>硬盘分区脚本演示:

			#!/usr/bin/bash
			#Author:
			#Created Time:
			#Scrip Description: harddisk partition script
	
			fdisk /dev/sdb <<EOF
			n
			p
			3
	
			+534M
			w
			EOF

		2>内存使用率脚本
			echo "当前内存使用率: 'echo "scale=2;141*100/7966"|'bc'%"

		3>输入输出交互式小程序脚本演示:

			#!/usr/bin/bash
			clear

			echo "Centos Linux 7 (Core)"
			echo -e "Kernel 'uname -r' an 'uname'\n"
			
			echo -n -e "$HOSTNAME login: "
			read acc
			read -p "password: "
			read pw

		4>声明一个关联数组脚本演示
			declare -A ass_array1
			declare -A ass_array2
			
			ass_array1[name]='bai'
			ass_array1[age]=18
			echo ${assarray1[name]}
			
			ass_array2=([name]='ayitula'  [age]=20)
			echo ${assarray2[name]}

3、运算
1)数学运算
-eq 等于 -gt 大于 -It 小于

			-ge   大于或等于            -le   小于或等于              -ne   不等于
脚本演示:
				NUM1=`echo "1.5*10" | bc | cut -d "." -f1`
				NUM2=$((2*10))
				test  $NUM1  -gt  $NUM2;echo $?

三、shell语句
  判断语句

1、单if语句

		if [condition]         #condition 值为ture或者false
		    then
		            commands
		fi
		语句的大意
		假如    条件是真
		   那么
		          执行commands代码块
		结束

2、if-then-else语句

			if  [condition]
			     then
			              commands1
			else
			              commands2
			fi
			
			语句翻译
			假如  条件为真
			   那么
			         执行commands1代码块
			否则
			         执行commands2代码块
			结束

3、if-then-elif 语句

              用于两个以上的判断
					if  [  condition 1 ]
					     then
					                 commands1
					elif  [  condition 2]
					      then
					                commands2
					...............
					else
					                commands x
					fi
					翻译过来
					假如  条件1为真
					   那么
					          执行代码块1
					假如条件2真   
					    那么
					           执行代码块2
					以上代码类推下去
					否则  没有一个满足
					       执行代码块x
					结束

  流程控制
for条件循环语句一(知道循环次数就要用for)
		for var in value1  value2
		         do
		                    commands 
		done  
语句二   c语言写法
			for ((变量;条件;自增减运算  ))
			       do
			               代码块
			done
 循环控制语句
		sleep  N     脚本执行到该步休眠N秒
		shell演示
		echo -n "倒计时:"
		for i in `seq 9 -1 1`
		   do
		        echo -n -e  "\b$i"
		        sheep 1
		done

 continue 跳过循环中的某次循环

 break  跳出循环继续执行后续代码

 while循环语句(如果不知道代码要循环多少次,就要用while)
		while  [   condition  ]   这里条件为真才会循环,条件为假while停止循环。
		do
		         commands
		done
  演示代码
 丈母娘选女婿
				1)姑娘带第一个男朋友回来
				read -p "money : " money
				read -p "car : " car_num
				read -p "house : " house
				2)第一个男朋友不满足,进入循环  开始选择模式
				while [ $money -lt 100000 ] || [$car_num -lt 1 ]  ||  { $house -lt 1 ]
				    do
				         echo " 不行 "
				         read -p "money:"  money
				         read -p "car:"  car_num
				         read -p "house:"  house
				done
				echo "给你了"

  循环控制与语句嵌套
		1)嵌套   if     for    while
		2)循环控制   sleep   break   continue
99乘法表
	1*1=1
	1*2=2  2*2=4   
	1*3=3  2*3=6  3*3=9  、、、、、、打印出来的排序是这样,前面是m  后是n

代码块

			n=1
			while [$n -lt 10 ] ; do
			   for  ((m=1;m<=$n;m++ ));do
			          echo -n -e "$m * $n =$((n*m))\t"
			   done
			   echo
			   n=$((n+1))
			done

until循环语句   与while相反,条件为假的时候开始执行,条件为真就停止执行。

语法

		until  [  condition ]    切记是条件假才会开始执行
		   do  
		        commands
		done

 case语句
		在生活中,我们总会要对一些事情做出很多选择,好比你去相亲,脑子了有个预想方案:
		第一次见对方父亲  应该叫伯父好
		第一次见对方母亲  应该叫伯母好
		第一次见对方奶奶  应该叫奶奶好、、、
		这就是case的特点  根据不同情况执行不同方案 千变万化的

语法

			case   变量  in
			条件1)
			            执行代码块1
			;;
			条件2)
			            执行代码块2
			;;
			、、、、、、、、、、、
			esac
			注意  每个代码完毕要以;;结尾代表结束,case结尾要以倒过来的esac来结束
	脚本演示
	case $1 in
	zmn | ZMN
	         echo "伯母好"
	         echo "伯母辛苦了"
	;;
	lzr | LZR
	         echo "伯父好"
	         echo"伯父真帅"
	;;
	lnn | LNN
	         echo "奶奶好"
	         echo “奶奶吉祥”
	;;
	*)
	echo   "USERGE:  $0       zmm | lzr | lnn "
	;;
	esac

函数的语法
模块化方便管理,节省内存,排插简单,改变代码的执行顺序
		1)
		函数名 () {
		         代码块
		         return   N
		        }
		2)
		function  函数名 {
			      代码块
			       return   N
			   }

 脚本演示
		1)先定义函数
		start () {
		        echo "Apache start ...........          [ok]"
		}
		
		stop () {
		        echo "Apache stop ...........          [ok]"
		}
		2)调用函数
		stop
		start
		start   (顺序可以调乱)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值