shell脚本介绍-创新互联

shell脚本介绍

玛纳斯ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

shell是什么

  • shell是一种脚本语言
  • 可以使用逻辑判断、循环等语法
  • 可以自定义函数
  • shell是系统命令的集合
  • shell脚本可以实现自动化运维,能大大增加我们的运维效率

shell脚本结构和执行方法

  • 开头需要加#!/bin/bash
  • 以#开头的行作为解释说明
  • 脚本的名字以.sh结尾,用于区分这是一个shell脚本
  • 执行方法有两种
  • chmod +x 1.sh;./1.sh
  • bash 1.sh
  • 查看脚本执行过程 bash -x 1.sh
  • 查看脚本是否语法错误 bash -n 1.sh

加入到chkconfig --list列表,必须有chkconfig,description这两项

shell脚本介绍

date命令的用法

date +"%Y-%m-%d %H:%M:%S"  //年月日时分秒
date +"%F %T"  //同上
date +"%s"        //时间戳
date -d @1521172172  //时间戳转化为年月日星期时分秒
date +%s -d '2016-9-10 06:10:30'   //将某个日期转化为时间戳
date -d "+1 day"   //一天后的日期
date -d "-1 day"   //一天前的日期
date -d "-1 month" //一月前的日期
date -d "-1 min"    //一分钟前的日期
date +%w     //星期
date +%W    //一年中的第几周

cal命令的用法

cal -h  //查看日历的帮助信息

shell脚本中的变量

  • 当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替
  • 使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ...; fi
  • 引用某个命令的结果时,用变量替代 n=wc -l 1.txt
  • 写和用户交互的脚本时,变量也是必不可少的 read -p 'input a number:' n; echo $n 如果没写这个n,可以直接使用$REPLY
  • 内置变量$0,$1,$2... $0表示脚本本身,$1第一个参数,$2第二个参数... $#表示参数个数
  • 数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

shell中的逻辑判断

格式1:if 条件 ; then 语句; fi
格式2:if 条件; then 语句; else 语句; fi
格式3: if 条件; then 语句; elif 条件; then 语句; else 语句; fi
逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 10 ]; if [ $b -eq 20 ]等
-gt (>); -lt ()<; -ge(>=); -le(<=); -eq(==); -ne(!=)
可以使用&& ||结合多个条件
if [ $a -gt 5 ] && [ $a -lt 10 ]; then ...; fi
if [ $b -gt 5 ] || [ $b -lt 3 ]; then...; fi

if判断文件、目录属性
[ -f file ]判断是否是普通文件,且存在
[ -d file ]判断是否是目录,且存在
[ -e file ]判断文件或目录是否存在
[ -r file ]判断文件是否可读
[ -w file ]判断文件是否可写
[ -x file ]判断文件是否可执行

if判断的一些特殊用法

if [ -z "$a" ]这个表示当变量a的值为空时
if [ -n "$a" ]表示当变量a的值不为空
if grep -q '123' 1.txt; then ...; fi //表示1.txt中含有‘123’的行时会怎么样
if [ ! -e file ] //表示文件不存在时
if((a<1)) //等于于if [ $a -lt 1 ]
[]中不能使用<,>,==,!=,>=,<=这样的符号

shell中的case判断

格式 case 变量名 in
            value1)
                        command
                        ;;
            value2)
                        command
                        ;;
            *)
                        command
                        ;;
            esac

在case程序中,可以在条件中使用 |,表示或的意思。如 2|3)

for循环

for 变量名 in 条件; do ...; done   //注意:for是以空格作为分隔符的

while循环

while 条件; do ...; done

continue、break、exit

continue  //用在循环中时,结束本次循环,进行下一次循环
break   //有在循环中时,跳出循环
exit   //退出整个脚本

shell脚本中的函数

函数就是把一段代码整理到一个单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个单元的名字即可

function 函数名 {   //函数必须放在最前面
    command
}

shell中的数组

a=(1 2 3 4 5)  //定义数组a
echo ${a[*]} 或 echo ${a[@]} //输出数组a的每个元素
echo ${a[0]} //输出数据a中的第一个元素
a[1]=100  //给数组a中的第二个元素赋值
a[5]=500  //给数组增加一个元素并赋值
unset a[5] //元素的删除
unset a  //数组的删除
echo ${#a[*]} 或 echo ${#a[@]}  //打印数组的个数
a=(`seq 1 10`)
echo ${a[*]:3:4} //下标为3开始截取,截取4个元素 [4,5,6,7]
echo ${a[*]:0-3:2}  //倒数第三个元素开始截取,截取2个 [8,9]
a=(${a[*]/10/20})  //将数组中的10的值改为20

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:shell脚本介绍-创新互联
分享URL:http://abwzjs.com/article/dojios.html