博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本
阅读量:3942 次
发布时间:2019-05-24

本文共 4153 字,大约阅读时间需要 13 分钟。

规范Shell脚本的一般组成

• #! 环境声明,下面的代码用哪一个程序来翻译• # 注释文本• 可执行代码脚本:可以执行的一个文本文件,可以实现某种功能vim /root/hello.sh#!/bin/bashecho hello worldcat /etc/redhat-release uname -rhostname ifconfig | head -2ls -l /root/hello.shchmod +x /root/hello.sh         所有人有执行权限/root/hello.sh                  绝对路径执行    > :只收集前面命令的正确信息    2>:只收集前面命令的错误信息    &>:收集前面命令的错误信息与正确信息(无论怎么去注入数据都填不满)/dev/null:黑洞设备                    它会把你输出的信息都粉碎调[root@server0 ~]# vim /root/user.sh #!/bin/bash useradd nsd05  &>  /dev/null echo 用户nsd05创建成功 echo 123 | passwd --stdin nsd05  &> /dev/null echo 用户nsd05密码设置成功[root@server0 ~]# chmod +x /root/user.sh[root@server0 ~]# /root/user.sh
为了增加脚本灵活,适应多变的环境,所以使用变量变量:容器(以不变的名称,存放可以变化的值)变量名=储存的值      使用变量储存的值 $变量名[root@server0 ~]# vim /root/user.sh#!/bin/basha=natsha                      定义变量a储存值useradd  $a  &> /dev/null     $a使用变量a储存值echo  用户$a创建成功echo  123  |  passwd --stdin $a &> /dev/nullecho  用户$a密码设置成功[root@server0 ~]# /root/user.sh
基本格式引用变量值:$变量名查看变量值:echo $变量名、echo ${变量名}[root@server0 ~]# echo ${a}7                    前面是变量,后面是常量单引 '  ' :取消所有特殊字符含义$( )或 反撇号`  `   都是一样的将命令的输出,作为参数参与下一个命令执行[root@server0 ~]# echo '*'*[root@server0 opt]# mkdir MySQL-`date +%F`[root@server0 opt]# ls MySQL-2019-01-06[root@server0 opt]# mkdir $(hostname)MySQL-2019-01-06          server0.example.com
环境变量  变量名一般都大写,用来设置用户/系统环境              系统定义赋值完成,用户直接使用即可    USER=永远储存当前登陆的用户名[root@server0 opt]# echo $USERroot
位置变量  bash内置,存储执行脚本时提供的命令行参数(非交互)              系统定义赋值完成,用户直接使用即可$1  $2  $3.........${10}    ${11}    ${12}[root@server0 /]# vim /root/1.sh #!/bin/bashecho $1cat -n $1 | head -$2[root@server0 /]# /root/1.sh /etc/passwd 3
让用户体验更好,降低脚本使用难度,让脚本运行产生交互read    -p   '   :'       1.产生交互,会等待用户输入内容       2.记录用户在键盘上的输入       3.将用户在键盘上的输入,赋值给变量储存预定义变量   bash内置,可直接调用的特殊值,不能直接修改                  系统定义赋值完成,用户直接使用即可	$#  已加载的位置变量的个数	$*  所有位置变量的值	$?  程序退出后的状态值,0表示正常,其他值异常[root@server0 /]# vim /root/1.sh#!/bin/bashecho $1echo $2echo $3echo $#     统计一共输入了几个命令行参数echo $*     输出所有的命令行参数echo $?     程序退出后的状态至(一般用数字来表示)                0是正常,非0是不正常条件测试  – [  测试表达式  ]   条件表达式每一部分都要有空格•检查文件状态	-e:文档存在为真	-d:文档存在,且必须为目录才为真	-f:文档存在,且必须为文件才为真	-r:文档存在,且必须对其有读取权限才为真	-w:文档存在,且必须对其有写入权限才为真	-x:文档存在,且必须对其有执行权限才为真
字符串比对        ==:相等为真              !=:不相等为真比较整数大小          -gt:大于      -ge:大于等于      -eq:等于      -ne:不等于      -lt:小于      -le:小于等于if双分支	if [ 条件测试 ];then	   命令序列xx	else	   命令序列yy	fi
[root@server0 /]# vim /root/if01.sh #!/bin/bashif [ $1 -eq 1 ];then   echo  hello else   echo  hifiif多分支处理	if [条件测试1];then	  命令序列xx          命令序列bb	elif [条件测试2];then	  命令序列yy     elif [条件测试3];then	  命令序列aa          ......	else	  命令序列zz	fi
案例:   利用read 读取用户输入的成绩.   如果成绩 大于等于90,则输出  优秀   如果成绩 大于等于80,则输出  良好   如果成绩 大于等于70,则输出  一般   如果成绩 大于等于60,则输出  合格   以上条件均不满足,则输出  一首凉凉送给你![root@server0 /]# vim /root/if02.sh  #!/bin/bashread  -p '请输入您的成绩:'   numif  [ $num -ge 90  ];then   echo  优秀elif [ $num -ge 80  ];then   echo  良好elif [ $num -ge 70  ];then   echo  一般elif [ $num -ge 60  ];then   echo  合格else  echo  '一首凉凉送给你!'fi
for 循环体系 ,反复执行类似的操作献血人==》采血购票者==》售票for  变量名  in 值列表do    命令done[root@server0 /]# vim /root/for.shfor a in lisi wangwu dc tc do     useradd $s      echo $a创建成功done[root@server0 ~]# chmod +x /root/for.sh[root@server0 ~]# /root/for.sh
循环的列表值,可以不参与,循环执行的反复操作造数工具:{起侍..结束}   {1..10}:[root@server0 ~]# echo {1..10}1 2 3 4 5 6 7 8 9 10[root@server0 ~]# vim /root/qw.sh#!/bin/bashfor a in {1..10}do    echo hahadone[root@server0 ~]# bash qw.shhaha haha haha haha haha haha haha haha haha haha[root@server0 ~]# vim /root/foo.sh    #!/bin/bash  if  [ $# -eq 0 ];then          #判断用户是否输入参数   echo '/root/foo.sh redhat|fedora' >&2 #变成错误输出   exit 1   #程序退出返回值为1  elif  [ $1 == redhat ];then   echo fedora  elif  [ $1 == fedora ];then   echo redhat  else   echo '/root/foo.sh redhat|fedora' >&2 #变成错误输出   exit 2   #程序退出返回值为2  fi
在虚拟机server:搭建Web服务       1.安装httpd(Apache)软件包(服务端软件)[root@server0 ~]# yum  -y  install   httpd  2.重起httpd服务[root@server0 ~]# systemctl restart httpd[root@server0 ~]# systemctl enable httpd3.书写一个页面文件默认网页文件的名字:index.html[root@server0 ~]# vim /var/www/html/index.html   

LSC 阳光明媚 滚动 字体颜色为红色 最大字体4.本机测试[root@server0 ~]# firefox 172.25.0.11

转载地址:http://urnwi.baihongyu.com/

你可能感兴趣的文章
Github使用问题合集
查看>>
QT多线程服务器
查看>>
Ubuntu 18.04.2 ulimit配置
查看>>
Ubuntu Mysql 安装与配置
查看>>
QT5.12 Mysql驱动未能加载问题
查看>>
现场直击|SequoiaDB@SIGMOD 2021:关注数据库的根科技存储技术
查看>>
赋能政企智慧办公,巨杉数据库与致远互联完成产品互认证
查看>>
SequoiaDB湖仓一体架构亮相 ACM SIGMOD 2021
查看>>
信通院发布第十二批大数据产品能力评测结果,巨杉数据库两款产品通过
查看>>
巨杉数据库荣获2020年度河南省科学技术进步奖
查看>>
湖仓一体提升管理效率 培育数据沃土
查看>>
报名启动!巨杉数据库 2021 湖仓一体技术大赛带你进入分布式技术的星辰大海
查看>>
H2数据库用户自定义函数方法及范例
查看>>
关于系统中使用多个PropertyPlaceholderConfigurer的配置
查看>>
厦大06应用金融硕士研究生推荐精读书目
查看>>
《越人歌》-诗经
查看>>
Jetty嵌入式服务器的JNDI快速配置指南
查看>>
夜, 北京
查看>>
图示ExtJS商业智能的仪表盘配置系统 - (Season 1)
查看>>
MAC 显示隐藏文件的方法
查看>>