美文网首页
SHELL编程注意事项

SHELL编程注意事项

作者: 10点睡7点起 | 来源:发表于2018-03-19 21:21 被阅读0次

    SHELL脚本

    • 切换shell:usermod -s /bin/csh

    • 查看当前shell的编号 echo $$

    • 查看shell之间的嵌套状态:pstree -P(显示进程树)

    • 当前的shell的层级:echo $SHLVL

    • shell脚本:语法检查:bash -n name.sh ; 调试检查: bash -x name.sh

    • 普通变量:只能对当前的shell中有效,在父shell以及子shell中都无效

    • 环境(全局)变量: 使用export var或者declare -x var定义变量

    • 打印全部环境变量:export/declaer -x或者/env/或者printenv

    • 显示全部变量:set

    • 撤销变量:unset var(建议在shell脚本结束时删除变量避免干扰,因为是在当前shell中定义的变量)

    • 远程备份文件: scp -arv /etc/ IP:/date/

    • 注:在脚本中调用另外的shell脚本相当与开启了子shell

    • 双引号:弱类型表达,可执行引号中的命令引用

    • 单引号:强类型表达,直接输出引号中的字符串

    • 变量的引用: 使用$var 或者 ${var}

    • 命令的引用: command 或者 $(command)

      • 注:在var=$(command)时,如果有多行内容
      • ${var} 或者 $var的打印,会将内容按一行打印,没有换行
      • “${var}” 或者 "$var"的打印,会将空白分隔符转成换行显示
    • bash中的算数运算(关键字let),语法形式如下:

      • let var=算数表达式
      • var=$[算数表达式]
      • var=$((算数表达式))
      • echo '算数表达式' | bc
    • 支持+=, -=, *=, /=, %=, --, ++ 运算 逻辑运算

    • bash中的条件测试命令

      • test EXPRESSION
      • [ EXPRESSION ] :标准写法是对其中的变量引用以及字符串都加双引号
      • [[ EXPRESSION ]] :一般用在包含正则表达式的情况下
      • 注意:EXPRESSION前后必须有空白字符
      • && 代表条件性的AND THEN (等价于-a) ; || 代表条件性的OR ELSE (等价于-o)
      • “==” 表示字符串间的判定
      • “-eq” 表示数字间的判定(也需要在变量引用两侧使用双引号)
    • 接受终端的输入,read
      -p: 指定要显示的提示信息
      -s: 静默输入,用于密码输入

    • 条件语句以及循环语句

    • if语句的格式为:
    
            if[ 判断条件 ];then
                statement
            elif[ 判断条件 ];then
                statement
            else
                statement
            fi
    
    • case语句的格式为:
        
            case 变量引用 in
            PAT1)
                statement
                ;;
            PAT2)
                statement
                ;;
            esac
    
    • for语句的格式为:
    
            for 变量名 in 列表;do          for ((init;条件表达式;控制变量的修正));do
                statement                         statement 
            done                          done
    
    • while语句的格式为:
    
            while 条件; do
                statement
            done        
    
    • 函数的格式:
    
            fName(){
                statement;
            }      
    
    • 调用函数与调用脚本的区别:

      • 调用函数不会开启子shell (因此函数定义的变量会影响脚本中的变量,给函数中的变量加local关键字)
      • 调用脚本会开启子shell
    • 一般将函数写入特定的文件中:functions

    • 在脚本中调用函数的时候首先输入 source /path/to/functions

    • declare -f:显示当前系统中的所有程序

    • 位置参数变量:$1、 $2 、、、${10} 用来表示传递给命令的参数

    • 特殊变量:

      • $? 用来表示最近一次命令的执行结果(可以判定命令是否成功执行 0)
      • $0 表示脚本名称本身
      • $@: 表示全部的输入变量,并且是按空格分开的
      • $# 表示变量数量
      • $*: 表示全部的输入变量,并且是按空格分开的
      • $@ 和 $* 在带了双引号的时候有区别
        • “$@” 表示按空格分开的字符
        • “$*” 表示将全部的输入整合成一个字符串
    • 数组操作:

      • 引用数组元素: ${ARRAY_NAME[INDEX]} 注意:省略[INDEX]表示引用下标为0的元素
      • 引用数组所有元素: ${ARRAY_NAME[*]} ${ARRAY_NAME[@]}
      • 数组的长度(数组中元素的个数): ${#ARRAY_NAME[*]} ${#ARRAY_NAME[@]}
      • 删除数组中的某元素:unset ARRAY[INDEX]
      • 删除整个数组: unset ARRAY

    相关文章

      网友评论

          本文标题:SHELL编程注意事项

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