Shell脚本语言 -echo命令

  #1、显示普通字符串

  echo "1-iPhoneX 标配 8388"

 

  #2、显示转义字符

  echo "2- " iPhoneX 顶配 9688 " "

 

  #3、显示变量

  iphone="iPhoneX"

  echo "3-${iphone} 9688"

 

  #4、显示换行

  #错误写法

  echo "4-iPhoneX \n hello未来"

  #正确写法(-e:表示开启转义功能)

  echo -e "5-iPhoneX \n hello未来"

 

  #5、不换行

  #注意:"-e"开启转义功能,"\c"表示不换行

  echo -e "6-iPhoneX hello未来 \c "

  echo "7-科技"

  #6、显示一个执行命令

  要求:输出当前时间

  echo `data`

  #7、退出命令

  语法:exit状态->退出程序

  写法一

    iPhone="404报错,买了一台"

    echo ${iphone}

    exit

    echo "你完了"

  写法二

    iPhone="404报错,买了一台"

    echo ${iPhone}

    exit 1

 Shell脚本语言-数组?

  1、语法

  数组名=(值1 值2 值3。。。)

  2、初始化数组

  方式1

    name=("404" "lsg" "ABC" "全部最差")

    echo $name

  默认打印第一个

  方式2

    name=()

    name[0]="1"

    name[]1="2"

    echo ${name[0]} ${name[1]}

  默认打印第一个

  3、读取数组

  语法结构:${数组名[下标]}

    name=("404" "lsg" "ABC" "全部最差")

  输出一个元素

    echo ${name[0]}

  输出所有->"@" "*"表示输出所有元素 【区别一个分开输出 一个以字符串输出】

    echo ${name[@]}

  3、数组长度

  方式1:获取数组元素的个数

  语法1:${(#数组名[@])}

  代码

    name=("404" "lsg" "ABC" "全部最差")

    echo ${#name[@]}

  方式2:获取数组元素的个数

  语法1:${(#数组名[*])}

  代码

    name=("404" "lsg" "ABC" "全部最差")

    echo ${#name[*]}

  方式3:获取数组里单个元素字符串的长度

  语法1:${(#数组名[下标])}

  代码

    name=("404" "lg" "ABC" "全部最差")

    echo ${#name[2]}

  结果:3

Shell脚本语言-传递参数?

  1、语法定义?

  ./文件名称.sh 参数1 参数2 参数3...

  2、案例

  脚本内容

  ${0} - >文件名称

  ${1} - >参数1

  ${2} - >参数2

    echo ${0} ${1} ${2}

  执行脚本

  ./文件名称.sh "豆你玩" "额导报"

  3、特殊字符

  1:$#:获取脚本输入参数个数

  脚本内容如下:

  echo ${#}

  执行脚本代码:

  ./文件名称.sh "豆你玩" "额导报"

  执行脚本结果:2

  2:$* 和 $# :整个脚本输入参数列表

  脚本内容如下:

    echo ${*}

  执行脚本代码:

  ./文件名称.sh "豆你玩" "额导报"

  执行脚本结果:"豆你玩" "额导报"

Shell脚本语言-基本运算符?

关系运算符

1、算术运算符?

  "+" 运算

  #注意"expr"规定命令执行加操作

    a=8

    b=9

    c=`expr $a + $b`注意变量加必须有空格 否则 执行结果:8+9

  执行结果:echo $c

  

  "-" 运算

  #注意"expr"规定命令执行减操作

    a=8

    b=9

    c=`expr $a - $b`注意变量运算必须有空格 否则 执行结果:8-9

  执行结果:echo $c

 

  "*" 运算

  #注意"expr"规定命令执行乘操作

  #注意乘法运算记得做一个转义字符 \*

    a=8

    b=9

    c=`expr $a \* $b`注意变量运算必须有空格 否则 执行结果:8*9

  执行结果:echo $c

 

  "÷ /" 运算

  #注意"expr"规定命令执行除操作

    a=8

    b=9

    c=`expr $a / $b`注意变量运算必须有空格 否则 执行结果:8/9

  执行结果:echo $c

 

  "%" 运算

  #注意"expr"规定命令执行取余操作

    a=8

    b=9

    c=`expr $a % $b`注意变量运算必须有空格 否则 执行结果:8%9

  执行结果:echo $c

 

  "=" 运算

    a=8

    b=$a

  执行结果:echo $b

 

  "==" 运算

    a=8

    b=9

    if [ $a == $b ]

    then

    echo "a 等于 b"

    else

    echo "a 不等于 b"

    fi

2、布尔运算符?

  "!" 非运算,表达式为true,返回true,否则返回false

    a=8

    b=9

    if [$a != $b]

    then

    echo"a不等于b"

    fi

  执行结果:echo $b

 

  "-o" 或运算,表达式为true,返回true,否则返回false

    a=8

    b=9

    if [$a -lt 10 -o $b -gt 8]

    then

    echo"a不等于b"

    fi

 

  "-a" 与运算,两个表达式都为true,返回true,否则返回false

    a=8

    b=9

    if [$a -lt 10 -a $b -gt 8]

    then

    echo"成立"

    else

    echo"不成立"

    fi

3、逻辑运算符?

  "&&" 逻辑且->and

    a=100

    b=200

    if [ $a -lt 200 ] && [ $b -gt 200 ]

    then

    echo"成立"

    else

    echo"不成立"

    fi

 

  "||" 逻辑或

    a=100

    b=200

    if [ $a -lt 200 ] || [ $b -gt 200 ]

    then

    echo"成立"

    else

    echo"不成立"

    fi

4、字符串运算?

  "="检测两个字符串是否相等,如果相等返回true

    a="lsg"

    b="你好"

    if [ $a = $b ]

    then

    echo "成立"

    else

    echo "不成立"

    fi

  

  "!="检测两个字符串是否相等,如果不相返回true

    a="lsg"

    b="你好"

    if [ $a != $b ]

    then

    echo "成立"

    else

    echo "不成立"

    fi

 

  "-z"检测字符串长度是否为0,如果是返回true

    a="lsg"

    if [ -z $a ]

    then

    echo "a空"

    else

    echo "a不为空"

    fi

  

  "-n"检测字符串长度是否为0,如果不是0返回true

    a="lsg"

    if [ -n "$a" ] 注意这里需要加双引号 要不语法错误 导致不执行else

    then

    echo "a不为空"

    else

    echo "a为空"

    fi

  

  直接检测字符串是否为空,如果不是空返回true

    a="lsg"

    if [ $a ]

    then

    echo "a不为空"

    else

    echo "a为空"

    fi

5、文件测试运算符?

  "-d file":检测文件是不是一个目录,如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -d $file ]

    then

    echo "是一个目录"

    else

    echo "不是一个目录"

    fi

  

  "-r file":检测文件是否可读,如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -r $file ]

    then

    echo "是可读"

    else

    echo "不可读"

    fi

  "-w file":检测文件是否可写,如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -w $file ]

    then

    echo "是可写"

    else

    echo "不可写"

    fi

 

  "-x file":检测文件是否可执行文件,如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -x $file ]

    then

    echo "是执行文件"

    else

    echo "不执行文件"

    fi

  "-f file":检测文件是否是一个普通文件(既不是目录,也不是设备文件),如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -f $file ]

    then

    echo "普通文件"

    else

    echo "特殊文件"

    fi

 

  "-s file":检测文件是有内容,如果有是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ - $file ]

    then

    echo "文件有内容"

    else

    echo "文件没有内容"

    fi

  

  "-e file":检测文件是否存在(包含了:目录文件),如果是,那么返回true

    file="/Users/lisiguang/Desktop/test.sh"

    if [ -e $file ]

    then

    echo "文件存在"

    else

    echo "文件不存在"

    fi

Shell脚本语言-流程控制?

  "if"语句

  语法结构

    if [条件]

    then

      代码

    fi 表示结束

  代码结构

    file="/Users/lisiguang/Desktop/test.sh"

    if [ - $file ]

    then

    echo "文件有内容"

    fi

  

  "if else"语句

  语法结构

    if [条件]

    then

      代码

    else

      代码

    fi 表示结束

  代码结构

    file="/Users/lisiguang/Desktop/test.sh"

    if [ - $file ]

    then

    echo "文件有内容"

    else

    echo "文件没有内容"

    fi

  

  "if elif else"语句

  语法结构

    if [条件]

    then

      代码

    elif [条件]

    then

      代码

    else

      代码

    fi 表示结束

  代码结构

    a=11

    if [ $a == 12 ]

    then

    echo "12"

    elif [ $a == 11 ]

    then

    echo "11"

    else

    echo "2"

    fi

 

  "for"循环语句

  语法结构

    for 变量名 in item1 item2 item3 ...

    do

      代码

    done

  代码案例1:读取简单的值

    for i in "lsg" "nihao" "meimei" "woaim"

    do

    echo $i

    done

  代码案例2:读取列表复杂的值 特殊字符 得转义 \` "I don't konw"便利是一个字符串 如果不加双引号 I don\'t konw 就是一个一个输出

    for i in "I don't konw"

    do

    echo ${i}

    done

  代码案例3:读取变量读取列表

    val="I don't konw"

    for i in val

    do

    echo ${i}

    done

  代码案例4:读取目录->(*)通配符

    val="/Users/lisiguang/Desktop/*"

    for i in ${val}

    do

    echo ${i}

    done

  代码案例5:支持c语言写法

    for ((a = 1; a<5; a++))

    do

    echo ${a}

    done

  代码案例6:嵌套循环

    for ((a = 1; a<5; a++))

    do

    echo ${a}

    done

  

  "while"循环语句

  语法结构

    while (())

    do

      代码

    done

  代码案例1:

    a=1

    while (($a<10))

    do

    echo $a

    a=`expr $a + 1`

    done

  代码案例2:

    无限循环1

    while :

    do

    echo hello""

    done

    无限循环2

    while true

    do

    echo "helloo"

    done

    无限循环3

    for ((;;))

    do

    echo "helloo"

    done

6"case"语句

  语法结构

    case 值 in

    模式1)

      代码

      ;;

    模式2)

      代码

      ;;

    模式3)

      代码

      ;;

    esac

  代码案例1:

    number=1

    case $namber in

    1)

    echo "等于1";;

    2)

    echo "等于2";;

    3)

    echo "等于3";;

    esac

7"until":循环

  语法结构

    until条件

    do

      逻辑代码

    done

  脚本代码

  注意:这个循环 false 进入循环体 一般true进入循环体

    i=1

    until (($i > 1))

    do

      echo "i小于等于1"

    done

 

8"break":跳出循环

  

  1跳出单个循环

  案例:

  for((i=0;i<10;i++))

  do

    echo "当前i的值:${i}"

    if [ ${i} -eq 5 ]

    then

      echo "退出循环"

      break

    fi

  done

 

  2跳出内部循环

  案例:

  for((i=0;i<5;i++))

  do

    echo "外层循环 ${i}"

    for((j=0;j<5;j++))

    do

      echo "内层循环 ${j}"

      if [ ${j} -eq 2 ]

      then

        echo "退出内层循环,执行下一个操作"

        break

      fi

    done

  done

 

  3跳出外部循环

  注意:break 1 默认1层 默认退出1层循环;如果break 2 就是退出2层循环;如果break 3 就是退出3层循环 (如果层数大于当前循环自动识别最大循环 不会报错 ;如果小于等于0会报错)

  案例:

  for((i=0;i<5;i++))

  do

    echo "外层循环 ${i}"

    for((j=0;j<5;j++))

    do

      echo "内层循环 ${j}"

      if [ ${j} -eq 2 ]

      then

        echo "退出内层循环"

        break 1

      fi

    done

  done

 

9"continue":跳出循环

  案例:

  for((i=0;i<5;i++))

  do

    echo "外层循环 ${i}"

    if [ ${i} -eq 2 ]

    then

      echo "下一个操作"

      continue

    else

      echo "else外层循环 ${i}"

    fi

    done

 

 

 

 

关系运算符

shell中使用echo转换unicode转换 shell语言echo_文件名

 

shell中使用echo转换unicode转换 shell语言echo_Desktop_02

 

 

shell中使用echo转换unicode转换 shell语言echo_字符串_03

 

 

shell中使用echo转换unicode转换 shell语言echo_Desktop_04

 

 

shell中使用echo转换unicode转换 shell语言echo_文件名_05