Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(上)

简介: Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制

一、echo命令



  • 1.1、显示普通字符串


#!/bin/bash
echo "iPhoneX 标配 8388"
  • 1.2、显示转义字符


#!/bin/bash
echo "  " iPhoneX 顶配 9688 "  "
  • 1.3、显示变量


#!/bin/bash
iphone="iPhoneX"
echo "${iphone} 9688"
  • 1.4、显示换行


#!/bin/bash
# 错误写法
echo "iPhoneX \n hello未来"
# 正确写法(-e:表示开启转义功能)
echo -e "iPhoneX \n hello未来"
  • 1.5、不换行:打印结果是:iPhoneX hello未来 科技


# 注意:"-e"开启转义功能,"\c"表示不换行
#!/bin/bash
echo -e "iPhoneX hello未来 \c "
echo "科技"
  • 1.6、显示一个执行命令:执行结果:2019年 6月 9日 星期日 16时29分24秒 CST


# 要求:输出当前时间,还有很多命令,后面学习一些
#!/bin/bash
echo `date`

提示:date两边的是 斜着的符号

  • 1.7、退出命令语法:exit 状态->退出程序
  • 写法一


#!/bin/bash
iphone="404报错童鞋,买了一台iPhoneX,非常不好,出bug"
echo ${iphone}
exit
echo "你完蛋了,买了假货"
  • 写法二


#!/bin/bash
iphone="404找不到错误"
echo ${iphone}
exit 0  
age=100
if(age > 100){
  exit 1
}


退出的状态码


image.png


二:Shell脚本语言-数组


  • 2.1、语法:数组名=(值一,值二,值三)
  • 2.2、初始化数组:
    方式一:打印结果:老大


#!/bin/bash
name=("老大" "刘二" "王三" "李四")
#输出
echo $name
#默认:打印第一个元素
  • 方式二:打印结果:老大 刘二


#!/bin/bash
name=()
name[0]="老大"
name[1]="刘二"
name[2]="王三"
name[3]="李四"
echo ${name[0]}  ${name[1]}
  • 2.3、读取数组
    语法结构:${数组名[下标]}


#!/bin/bash   
name=("老大" "刘二" "王三" "李四")
#输出一个元素       
echo ${name[0]}
#输出所有->"@"表示输出所有的数据
echo ${name[@]}


"@"表示输出所有的数据

  • 2.4、数组长度
  • 方式一:获取数组元素个数,打印结果:4
    语法:${#数组名[@]}


#!/bin/bash
name=("老大" "刘二" "王三" "李四")
echo ${#name[@]}
  • 方式二:获取数组元素个数,打印结果:4
    语法:${#数组名[*]}


name=("老大" "刘二" "王三" "李四")
echo ${#name[*]}
  • 方式三:获取单个元素->字符长度,打印结果:2
    语法:${#数组名[下标]}


name=("老大" "刘二" "王三" "李四")
echo ${#name[0]}


三:Shell脚本语言-传递参数


  • 3.1、语法定义?


./文件名称.sh 参数1 参数2 参数3...
  • 3.2、案例,脚本内容如下:


#${0}->表示文件名称
#${1}->表示参数1
#${2}->表示参数2
echo ${0} ${1} ${2}
  • 执行脚本代码:


./hello.sh "哈哈" "嘿嘿"
  • 3.3、特殊字符
  • <1>、 $#:获得脚本输入参数个数,脚本内容如下:


echo ${#}
  • 执行脚本代码:


./hello.sh "逗你玩" "饿到爆"
  • 执行脚本结果:2
  • <2>、$*:显示整个脚本输入参数列表,脚本内容如下:


echo ${*}
  • 执行脚本代码:


./hello.sh "逗你玩" "饿到爆"
  • 执行脚本结果:"逗你玩" "饿到爆"


四:Shell脚本语言-基本运算符



  • 4.1、算数运算符
  • <1>、+ 加运算,注意:expr 规定命令,结果是 10


a=1
b=9
c=`expr $a + $b`
echo "c的值:$c"
  • <2>、- 减运算,注意:expr 规定命令,结果是 6
a=8
b=2
c=`expr $a - $b`
echo "c的值:$c"
  • <3>、* 乘运算,注意:expr 规定命令,注意: * 要加一个转义符号 \,结果是 18


a=2
b=9
c=`expr $a \* $b`
echo "c的值:$c"
  • <4>、/ 除运算,注意:expr 规定命令,结果是 4


a=8
b=2
c=`expr $a / $b`
echo "c的值:$c"
  • <5>、% 求余运算,注意:expr 规定命令,结果是 2


a=8
b=3
c=`expr $a % $b`
echo "c的值:$c"
  • <6>、= 赋值运算,注意:expr 规定命令,结果是 8


a=8
b=$a
echo "b的值:$b"
  • <7>、== 等于判断运算,注意:expr 规定命令,结果是:a不等于b


a=8
b=9
if [ $a == $b ]
then
echo "a等于b"
else
echo "a不等于b"
fi
  • 4.2、关系运算符
  • <1>、-eq(equal:相等):检测两个数是否相等,当等返回true,结果是:a不等于b


a=100
b=200
if [ $a -eq $b ]
then
  echo "a等于b"
else
  echo "a不等于b"
fi
  • <2>、-ne(not equal:不等):检测两个数是否相等,不相等返回 true,结果是:a不等于b


a=100
b=200
if [ $a -ne $b ]
then
  echo "a不等于b"
else
  echo "a等于b"
fi
  • <3>、-gt(greater than:大于):检测左边数是否大于右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -gt $b ]
then
echo "a大于b"
else
echo "a小于b"
fi
  • <4>、-lt(less than:小于):检测左边数是否小于右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -lt $b ]
then
echo "a小于b"
else
echo "a大于b"
fi
  • <5>、-ge(greater than or equal:大于或等于):检测左边数是否(大于+等于)右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -ge $b ]
then
echo "a大于等于b"
else
echo "a小于b"
fi
  • <6>、-le(less than or equal:小于或等于):检测左边数是否(小于+等于)右边数,如果是,返回true,结果是:a小于等于b


a=100
b=200
if [ $a -le $b ]
then
echo "a小于等于b"
else
echo "a大于b"
fi
  • 4.3、布尔运算符
  • <1> !:非运算,表达式为true,返回true,否则返回false


a=100
b=200
if [ $a != $b ]
then
   echo "a不等于b"
fi
  • <2> 、-o:或运算,有一个表达式为true,则返回true


a=100
b=200
if [ $a -lt 200 -o $b -gt 200 ]
then
   echo "成立"
fi
  • <3> 、-a:与运算,两个表达式为true,则返回true,结果不成立


a=100
b=200
if [ $a -lt 200 -a $b -gt 200 ]
then
    echo "成立"
else
    echo "不成立"
fi
  • 4.4、逻辑运算符
  • <1> 、&&:逻辑且->and,结果:不成立


a=100
b=200
if [ $a -lt 200 ] && [ $b -gt 200 ]
then
echo "成立"
else
echo "不成立"
fi
  • <2> 、||:逻辑 OR,结果:成立


a=100
b=200
if [ $a -lt 200 ] || [ $b -gt 200 ]
then
echo "成立"
else
echo "不成立"
fi
  • 4.5、字符串运算
  • <1>、=:检测两个字符串是否相等,如果相等返回true


a="HR"
b="iOS"
if [ $a = $b ]
then
echo "字符串a等于字符串b"
else
echo "字符串a不等于字符串b"
fi
  • <2>、!=:检测两个字符串是否相等,如果不相等返回true


a="HR"
b="iOS"
if [ $a != $b ]
then
echo "字符串a不等于字符串b"
else
echo "字符串a等于字符串b"
fi
  • <3>、-z:检测字符串长度是否为0,如果是返回true,结果:a不存在值


a="iOS"
if [ -z $a ]
then
echo "a为空,不存在值"
else
echo "a存在值"
fi
  • <4>、-n:检测字符串长度是否为0,如果不是0,返回true


a="iOS"
if [ -n "$a" ]
then
echo "a存在"
else
echo "a不存在值"
fi

提示:在使用 -n 的时候, 变量a要这样写 "$a"

  • <5>、字符串:检测字符串是否为空,不为空返回true


a="JAR"
if [ $a ]
then
    echo "a不为空"
else
    echo "a为空"
fi
  • 4.6、文件测试运算符file="/Users/wangchong/Desktop/opencv知识/array.sh"
  • <1>、-d file:检测文件是不是一个目录,如果是,那么返回true,结果是:不是一个目录


if [ -d $file ]
then
echo "是一个目录"
else
echo "不是一个目录"
fi
  • <2>、-r file:检测文件是否可读,如果是,那么返回true


if [ -r $file ]
then
echo "可读"
else
echo "不可读"
fi
  • <3>、-w file:检测文件是否可写,如果是,那么返回true


if [ -w $file ]
then
echo "可写"
else
echo "不可写"
fi
  • <4>、-x file:检测文件是否是可执行文件,如果是,那么返回true


if [ -x $file ]
then
echo "可执行"
else
echo "不可执行"
fi
  • <5>、-f file:检测文件是否是一个普通文件(既不是目录,也不是设备文件),如果是,那么返回true


if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
  • <6>、-s file:检测文件是否为空(文件有内容),如果是,那么返回true


if [ -s $file ]
then
echo "文件有内容"
else
echo "文件没有内容"
fi
  • <7>、-e file:检测文件是否存在(包含了:目录和文件),如果是,那么返回true


if [ -e $file ]
then
echo "存在"
else
echo "不存在"
fi


目录
相关文章
|
6天前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
13天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
23 1
|
13天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
15 1
|
13天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
13天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
13天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
31 5
|
13天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
13天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
13天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
17 3
|
13天前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组