您的位置:首页 > 运维架构 > Shell

Shell之常用语法总结

2020-06-05 06:55 281 查看

Shell常用语法总结

  • 布尔运算符 ! -a -o
  • 数组的定义及打印方法
  • 从控制台读取数据并打印
  • 赋值,删除,单双引号
  • 导包调用其它脚本文件的方法
  • 脚本内方法的编写
  • 我的方法
  • 输出字体加颜色
  • While ,for无限循环 case选择结构
  • while循环
  • Until
  • Let
  • while
  • 乘法口诀
  • 1到100的和
  • for循环的字符串用法
  • If语句比较大小
  • while循环读取content文件,将adds.txt文件覆盖到content文件
  • 格式输出
  • test几种用法
  • 运算符

    逻辑算符 || &&

    #a=10
    #b=15
    #if [[ $a -ge 10 && $b -le 15 ]]
    #then
    #echo "$a -ge 10 && $b -le 15: true"
    #else
    #echo "$a -ge 10 && $b -le 15: false"
    #fi

    布尔运算符 ! -a -o

    #a=100
    #b=150
    #if [ $a -ge 100 -a $b -gt 150 ]
    #then
    #echo "$a -gt 100 -a$b -gt 150: true"
    #else
    #echo "$a -gt 100 -a$b -gt 150: false"
    #fi

    数组的定义及打印方法

    arry=("张三" "list" 32 28)
    echo ${arry[2]}
    echo "------取全部值----------"
    echo "数组的个数为:${#arry[*]}"
    echo "数组的个数为:${#arry[@]}"
    echo "数组的所有元素为:${arry[*]}"
    echo "数组的所有元素为:${arry[@]}"
    
    echo "--------1----------"
    for i in $(seq 0 ${#arry[@]})
    do
    echo ${arry[$i]}
    done
    
    echo "--------2----------"
    #数组通过for的遍历方式
    for value in ${arry[*]}
    do
    echo $value
    done

    从控制台读取数据并打印

    #echo "文件名:$0"
    #echo "长度:$#"
    #echo "所有:$*"
    
    #for i in "$*"
    #do
    #echo $i
    #done
    
    #for value in "$@"
    #do
    #echo $value
    #done
    
    read name
    echo $name is a 大帅哥
    echo "参数个数为:$#"
    echo "shell传参"
    echo "文件路径及名字:$0"
    echo "第一个参数:$1"
    echo "第一个参数:$2"

    赋值,删除,单双引号

    myName="gree"
    echo ${myName}
    echo "$myName hei"
    echo '$myName hei'
    
    #unset myName
    #echo $myName

    导包调用其它脚本文件的方法

    #!/bin/bash
    . ./fundemo.sh
    
    num1=200
    num2=300
    
    sum=`myFunReturn $num1 $num2`
    echo "contains.sh 传值求和: $sum"

    脚本内方法的编写

    myFunReturn(){
    #read -p "请输入一个数字:"  num1
    #read -p "请输入一个数字:"  num2
    num1=$1
    num2=$2
    #value=$[num1+num2]
    #echo "方法内的结果:$value"
    echo $[num1+num2]
    }
    sum=`myFunReturn 21 2222`
    echo "两个数的和为:$sum"

    我的方法

    fun(){
    read -p  "第一个数:"  nu1
    read -p  "第二个数:"  nu2
    
    #return $(($nu1+$nu2))
    #return `expr $nu1 + $nu2`
    #sum=`expr $nu1 + $nu2`
    #sum=$[ nu1 + nu2 ]
    sum=$((nu1 + nu2))
    echo $sum
    }
    value=`fun 21 2222`
    echo "两数之和为:$value";
    
    #echo $?(这一行用于方法内return返回值的接受输出,以上方法没有用到)

    输出字体加颜色

    #myFun(){
    #echo -e "\033[32mHello World!\033[0m"
    #}
    #echo "start"
    #myFun
    #echo "end"

    While ,for无限循环 case选择结构

    while true

    do
    
    read -p "请输入一个数字:" aNum
    case $aNum in
    1)
    echo "choose 1"
    ;;
    2)
    echo "choose 2"
    ;;
    *)
    echo "no choose"
    break
    ;;
    esac
    done

    for(( ; ; ))

    do
    echo "请输入1-3之间的数"
    read nu
    case $nu in
    1) echo 1;;
    2) echo 2;;
    3) echo 3;;
    *) echo "游戏结束"
    break;;
    esac
    done

    while循环

    #a=999
    #b=666
    #
    #while (( $a >= 992 ))
    #do
    #echo "当前 a 的值为:$a"
    #let "a--"
    #done

    Until

    #a=0
    #until((a>10))
    #do
    #echo "$a"
    #let ++a
    #done
    
    #a=0
    #until [ ! $a -lt 10 ]
    #do
    #echo "$a"
    #a=$[a+1]
    #done

    Let

    #let a=5+3
    #let b=5-3
    #let c=a++
    #let d=b--
    #echo "$a $b $c $d"

    while

    #int=1
    #while(( $int<=10 ))
    #do
    #echo $int
    #int=$[int+1]
    #done

    乘法口诀

    #for((i=1; i<=9; i++))
    #do
    #for((j=1; j<=i; j++))
    #do
    #echo -n -e "$j*$i=$[i*j]\t"
    #done
    #echo ""
    #done

    高级版本

    for i in $(seq 9)
    do
    for j in $(seq $i)
    do
    echo -n -e "$j*$i=$(($i*$j))\t"
    done
    echo ""
    done
    我的版本
    #ji=0
    #for((i=9; i>=1; i--  ))
    #do
    #for((j=9; j>=i; j--  ))
    #do
    #echo -n -e "$i*$j=$[i*j]  "
    
    #done
    #echo ""
    #done

    1到100的和

    #sum=0
    #for((i=1; i<=100; i++))
    #do
    #sum=`expr $i + $sum`
    #done
    #echo "$sum"

    for循环的字符串用法

    #for str in "This" "is" "a" "string"
    #do
    #echo "$str"
    #done
    
    #for num in 1 2 3 4 11
    #do
    #echo "$num"
    #done

    If语句比较大小

    #num1=100
    #num2=200
    #if [ $num1 == $num2 ]
    #then
    #echo "两个数相等"
    #elif [ $num1 -gt $num2 ]
    #then
    #echo "num1大于num2"
    #else
    #echo "num1小于num2"
    #fi

    while循环读取content文件,将adds.txt文件覆盖到content文件

    #!/bin/bash
    
    while read content
    do
    echo $content | grep "142" | sed 's/,/ /g' | awk '{print $2}'
    done < adds.txt | sed -n '1,3p'

    格式输出

    printf '%s\t%s\t%s\n' gree wanglei zhangjun
    
    #printf '%s\n' gree wanglei zhangjun
    
    #printf '%s %d\n' gree 32
    
    #printf "%10s %10s %10s\n" 姓名 性别 体重kg
    #printf "%-10s %-10s %-10s\n" 姓名 性别 体重kg
    #printf "%-10s %-10s %-4.2f\n" 张三 男 53.1264
    #printf "%-10c %-10s %-4.2f\n" abcde 男 53.1264

    test几种用法

    #echo "Hello Shell"
    
    #printf "Hello, Shell "
    
    #echo "Hai"
    
    if test -e /home/zxl
    then
    echo "有"
    else
    echo "没有"
    fi
    
    #num1=100
    #num2=200
    
    #if test $num1 -eq $num2
    #then
    #echo "相等"
    #else
    #echo "不相等"
    #fi
    
    #result=$[num1+num2]
    #result1=`expr $num1 + $num2`
    #echo "$result \t $result1"
    echo string
    echo "hello world!"
    echo '"hello world!"'
    echo \"hello world!\"
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: