美文网首页
shell脚本

shell脚本

作者: 小样_简书 | 来源:发表于2019-08-29 19:31 被阅读0次

    简述

    标志:#! 目的告诉系统后面的路径文件以那种脚本来执行,有#! bin/sh(标准)和#!bin/bash (替代)
    扩展名:.sh(扩展名不影响脚本执行)
    执行文件:chmod +x ./test.sh #使该脚本文件具有执行权限
                      ./test.sh                  #直接执行脚本
    注释:##之后的一行都为注释内容,该行会被解释器忽略
    变量:定义变量  varible='test'       #变量名与等号之间不能有空格,必须紧密相连,变量后不能有;
    使用变量  ${varible}            #使用变量时,一般用${}括起来
    遇到非真返回的语句,就结束脚本执行

    常用操作

    字符串操作  t_string='I\'m a good programmer'
    求长度: ${#t_string}# 21
    字符串截取:${t_string:2:5} # m a
    数组   t_array=(item1 item2 item3)# 定义数组用圆括号包起来,元素之间采用空格分隔,只能定义一维数组
                t_array[0]=item1# 也可单独进行变量赋值,复制下标可以不连续,且范围不限制
                        读取数组的值方法:${数组名[下标]} ${t_array[0]}#下标的值小于10时,正常,大于10时娶不到              对应数组的值,需要用${10}扩起来使用
                读取数组所有的值:${t_array[@]}
                获取数组的长度:${#t_array[@]}#和字符串的获取方法相
    alias 为常用或名字较长的命令,指定别名
    sleep 延时操作

    输出命令

    echo:输出命令(自动添加换行)

    参数 -e表示开启转义

                        \c  表示不换行

    printf: printf(format-string, [arguments···])

    format-string 格式控制字符串

       [ arguments ···] 参数列表

    set命令

    set命令的实质或目的就是为了使脚本运行跟安全和健壮,便于排查异常,如下:

    set -u : 表示使用未初始化的变量时,自动推出;相同作用的命令有set -o nounset#shell脚本一般在变量未定义前使用,不会报错

    set -x : 表示在脚本命令运行之前,先输出执行脚本命令本身;相同命令set -o xtrace# 用于脚本调试

    set -e : 表示若有出现返回非真的命令语句,就直接退出该脚本,尽早捕获错误;相同命令set -o errexit# 一般位于脚本的开始位置,可以通过set -e 表示开启该模式,set +e表示关闭该选项

    set -o pipefail : 和set -e的作用有点类似,都是判断脚本命令,但是后者遇到 用 | & 这种复合的管道,不能达到理想效果,一般shell的返回值都以最后一个命令的返回值为准,而后者是指只要其中的一个子命令失败,那么认为整个管道就失败了,脚本终止;

    一般来说,我们的脚本都是混合使用set命令的,如set -xe | set -uxe

    sed命令

    sed(stream editor) 流编辑器,配合正则表达式使用,进行替换

    替换语法:标准格式为 sed 's/pattern/replace_string/' file# pattern为正则表达式,replace_string为要替换的字符 file为目标文件

    我们canary项目中,实际案例:sed -i'' "s/\"max\"/\"$CPU_NUM\"/g" process.json

    其中:

    i 用于直接修改原file

    replace_string/后面的标示分类:没有 => 表示只替换匹配的第一个

                                                          2       => 表示替换第二个

                                                          g       => 表示替换所有

                                                          2g     =>表示从n处开始替换

    curl命令

    curl命令是一个利用URL规则在命令行下工作的文件传输工具,常用为下载工具

    基本用法: curl url > index.html

    xx代码示例:

    【curl -s -o-https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh| bash】

    【curl --fail --retry 3 -F "name=myfe/canary" -F "file=@update.tar.gz"filename】

    tar命令

    tar命令实质进行打包和解包文件的

    标准语法tar [params] modifiedFile originFile  

    tar -czf update.tar.gz * 将所有文件都打包到update.tar.gz文件中

    关键字

    shell脚本上传图片

    1、touch uoload.sh创建upload.sh文件
    2、vi upload.sh编辑upload.sh文件
    3、cat upload.sh查看upload.sh文件
    4、rm -rf upload.sh删除upload.sh文件
    5、scp /文件path 服务器地址 上传到远程服务器
    6、bash upload.sh执行代码

    总结:shell是一些命令的集合

    相关文章

      网友评论

          本文标题:shell脚本

          本文链接:https://www.haomeiwen.com/subject/qhewectx.html