shell 学习(二)

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
 
 
 
 
关系运算符

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/freebreath-stack/p/9621203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值