美文网首页Shell
Shell 的基本使用

Shell 的基本使用

作者: Air_cc | 来源:发表于2016-04-17 02:36 被阅读44次

    这里使用的是Bash

    概要语法

    #!/bin/bash
    
    # 变量定义
    temp="hello-world"
    
    # 使用变量 -- 只能在双引号中嵌入变量
    echo "hello -${temp}- world"
    
    # 截取字符串
    echo ${temp:0:2}
    
    #字符串长度
    echo ${#temp}
    
    # 数组
    arr=(1, 12, "a")
    echo ${arr[0]}, ${arr[@]}, ${#arr[@]}
    
    # 参数
    echo "参数的个数: $#"
    echo "所有参数: $@"
    echo "第一个参数: $1"
    echo "当前程序运行进程: $$"
    echo "后台退出时的状态: $?"
    
    # 运算符
    
    # 算数符
    # 原生的bash不支持算数,使用expr来实现
    # 使用``包裹
    # 表达式和运算符之间要有空格
    val=`expr 1 + 2`
    val_1=`expr ${val} % 2`
    
    
    echo "1 + 2 = ${val}", ${val_1}
    echo "1 * 2 = `expr 1 \* 2`"
    echo "1 / 2 = `expr 1 / 2`"
    
    
    if [ ${val} == ${val_1} ]
    then
       echo "a 等于 b"
    fi
    
    if [ ${val} != ${val_1} ]
    then
       echo "a 不等于 b"
    fi
    
    # 关系运算符
    # -eq -ne -gt -lt -ge -le
    if [ $val -eq $val_1 ]
    then
      echo "a eq b"
    fi
    
    a=10
    b=20
    
    # 布尔运算符
    # !(非) -o(或) -a(与)
    
    if [ $a -lt 11 -a $b -gt 11 ]
    then
      echo "$a -lt 11 -a $b -gt 11"
    fi
    
    # 逻辑运算符
    # && ||
    
    if [[ $a -lt 11 && $b -gt 11 ]]
    then
      echo "$a -lt 11 -a $b -gt 11"
    fi
    
    
    filepath="/Users/air_cc/workspace/wechat/fabric-deploy"
    if [ -d $filepath ]
    then
      echo "file is directory"
    fi
    
    
    # echo的用法
    # read name # 读取标准输入的第一行
    # echo "get name: ${name}"
    
    echo -e "hello\n" # 转意输出
    echo "hello"
    
    echo `date`
    echo `ls`
    
    # printf格式化输出
    printf "%s-%c-%-4d-%.2f \n" hello w 12 12.234
    printf "jack \a"
    
    
    # 流程控制
    a=$1
    if [ $a -eq 10 ]
    then
      echo 'a == 10'
    elif [[ $a -lt 20 ]]; then
      echo '$a lt 20'
    else
      echo 'other'
    fi
    
    for (( i = 0; i < 10; i++ )); do
      echo "i = $i"
    done
    
    for i in 12, 'aaa', false; do
      echo "i = ${i}"
    done
    
    a=10
    while [[ a -gt 1 ]]; do
      echo "while a == $a"
      let "a--"
    done
    
    
    until [[ a -gt 10 ]]; do
      if [ $a -ne 3 ]; then
        echo "until a == $a"
      else
        echo "util a is ${a}"
      fi
    
      let "a++"
    
      if [ $a -eq 8 ];then
        echo "breaked"
        break;
      fi
    
    done
    
    
    # read word
    case $word in
      1) echo 'select 1'
        ;;
      2) echo 'select 2'
        ;;
      *) echo 'select other'
        ;;
    esac
    
    
    # 函数
    finWithParam() {
      printf "$0 参数: $1 - ${12} - \n $@ \n - $# \n"
    }
    finWithParam 1 2 3 4 5 6 7 8 9 10 11 12 13
    
    
    # 使用外部sh脚本
    filepath='./tempfile'
    if [ -f $filepath ]; then
      echo `file ./tempfile`
    fi
    source ./tempfile # 或者 . ./tempfile
    echo "-h-"
    echo "get url: ${url}"
    
    

    小技巧

    • 当前执行shell文件的位置
    echo "相对位置: `dirname $0`"
    echo "绝对位置: `cd \`dirname $0\` && pwd`"
    

    参考

    相关文章

      网友评论

        本文标题:Shell 的基本使用

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