Linux shell 脚本

本文发布时间: 2019-Mar-22
一、初识脚本shell:一类介于系统内核与用户之间的解释程序。脚本:一类使用特定语言,按预设顺序执行的文件批处理、宏、解释型程序创建shell脚本:理清任务过程--整理执行语句--完善文件结构1.任务目标 1.按任务顺序 1.执行环境2.先做什么 2.必要的结构控制 2.必要的注释信息3.再做什么 3.如何免交互 3.友好的提示4.每一步如何实现例子:1)理清任务过程1.添加一个名为zhangsan的用户添加一个名为zhangsan的用户useradd zhangsan2.将用户zhangsan的口令设置为123456passwd zhangsan2)整理执行语句useradd zhangsanecho 123456| passwd --stdin zhangsan3)完善文件结构脚本文件:uad.sh#!/bin/bash#2015-04-12,by Moonecho "正在创建用户账号zhangsan..."useradd zhangsanecho "正在为用户zhangsan设置密码..."echo 123456|passwd --stdin zhangsanecho "创建成功。"4)执行shell脚本方法:1. chmod +x uad.sh ./uad.sh 2. sh/bash uad.sh 3. source/. uad.sh二、shell命令的组合运用管道操作:将一端的命令输出交给另一端的命令处理 方向:单向格式:命令1|命令2例子:1.find /etc -name "*.conf" -type f //查找以.conf结尾的文件/etc/autofs_ldap_auth.conf.. .. find /etc -name "*.conf" -type f | wc -l //wc统计 -l按行统计 3082.ps aux | grep httpd //gerp 过滤只剩与httpd相关的信息重定向:改变执行命令时的默认输入、输出类型 | 操作符 |用途重定向输入 |< |从指定文件读取数据,而不是从键盘输入 重定向输出 | >、>> |将输出结果覆盖、追加到指定文件标准错误输出 |2>、2>> |将错误信息覆盖、追加到指定文件混合输出 |&>、&>> |将标准输出和错误信息覆盖、追加到指定文件例子:1.uname -r //linux 内核版本信息2.6.18-194.el5uname -r > version.txt //版本信息保存到了version.txt2.cat version.txt version2.txt2.6.18-194.el5cat:version2.txt:没有那个文件或目录cat version.txt version2.txt 2>error.txt //把错误信息保存到error.txt中2.6.18-194.el5cat error.txtcat:version2.txt:没有那个文件或目录逻辑分隔:处理多条命令之间的逻辑关系逻辑与:&&逻辑或:||顺序执行::例子:1.echo "萝卜" && echo "白菜"萝卜白菜echo "萝卜"||echo "白菜"2.mkdir /mulu/a 2>/dev/null && echo "成功" mkdir /mulu/a 2>/dev/null ||echo "失败" 失败!3.cd /boot/grub:ls -lh grub.comf //-h意味着便于人操作三、使用变量1.变量基本操作:定义与赋值:格式:变量名=变量名引用变量:格式:$变量名 、${变量名}例子:Title = Moonecho $TitleMoon2、定界符号双引号、单引号、反撇号双引号:允许引用,\转义单引号:禁止引用、转义反撇号,或者$()以命令输出进行替换例子:1.echo "$Title group"Moon groupecho '$Title group'$Title group2.uname -r2.6.18-194.el5Ver=`uname -r `echo $ver2.6.18-194.el53.常见的环境变量用来记录/设置运行参数系统赋值:USER、LOGNAME、HOME、SHELL、......用户操作: PATH、LANG、CLASSPATH、.....例子:1.env #列出所有环境变量HOSTNAME=pc05.benet.comSHELL=/bin/bashHOME=/rootLOGNAM=root.. ..2.echo $USER $HOME SHELLzhangsan /root SHELLecho $LANGzh_CN.UTF-8其他特殊变量:由系统或脚本操控,不可直接赋值:$?:前一条命令的状态值,0为正常、非0异常$0:脚本自身的程序名或路径$1-$9:第一-第九个位置命令的参数$* :命令行的所有位置参数的内容$#:命令行的位置参数个数例子:1.mkdir /muluaecho $?0mkdir /mulu/amkdir:无法创建目录 “/mulu/a”:没有那个文件或目录echo $?1 2.cat test.sh#!/bin/bashecho “本程序名:$0”echo "执行时一共输入$#个位置参数"echo “其中第一个参数是:$1”echo “所有参数如下:$*”./test.sh Hello Everyday!本程序名:./test.sh执行时一共输入2个位置参数其中第一个参数是:Helo所有参数如下:Hello Everyday!四、数值运算及处理1.整数运算操作:使用expr命令,计算表达式格式:expr 数值1 操作符 数值2使用$[]表达式,算式提换格式:$[数值1 操作符 数值2]例子:1.expr 45+2166expr 45-2123expr 45\*21 #shell 中 把* 当成通配符,所以应该转义下945expr 45/212expr 45%213X=45;Y=21;expr $X-$Y242.echo $[45+21]66echo $[45*21]945X=45;Y=21;echo $[X-Y]242.几个数值处理技巧变量的递更处理格式:let 变量名++、 let变量名--使用随机数RANDOM 变量生成数字序列格式:seq 首数 末数、 seq 首数 增量 末数例子:1.X=45;Y=21let X++;echo $X46let Y--;echo $Y20let X+=2;echo $X482.echo $RANDOM #RANDOM 变量的取值范围为0-327674411echo $RANDOM26911echo $[RANDOM%100]54echo $[RANDOM%100]833.seq 3 #第一个数是从1 开始的 1 可以省略123seq 3 5345seq 3 2 1035 79小数运行操作:将表达式给bc命令处理例子:echo “45.67-21” | bc24.62echo "scale=4;10/3" | bc #通过scale来约束小数位3.3333


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2019-May-25 12:56pm
栏目列表