shell学习数组、基本运算符
来源:互联网 发布:vb中要求对象 编辑:程序博客网 时间:2024/05/17 00:51
数组
语法
数组名=(值1 值2 值3…)
初始化数组
有两种方法
1. 方式一
name=("李明" "Andy" "李磊" "james")echo $name
打印第一个元素
2. 方式二
name=()name[0]="404"name[1]="Andy"name[2]="柚芒子"name[3]="全班最菜"echo ${name[0]} ${name[1]}
读取数组
语法结构:${数组名[下标]}
name=("404" "Andy" "柚芒子" "全班最菜")#输出一个元素 echo ${name[0]}#输出所有->"@"表示输出所有的数据echo ${name[@]}#输出所有->"*"表示输出所有的数据echo ${name[*]}
数组里面的长度
1.数组长度
语法:${#数组名[@]}
或者: ${#数组名[*]}
name=("404" "Andy" "柚芒子" "全班最菜") echo ${#name[@]} echo ${#name[*]}
结果 4
2.数组元素长度
语法:${#数组名[下标]}
name=("404" "Andy" "柚芒子" "全班最菜") echo ${#name[2]}
结果 3
传递参数
语法定义
./文件名称.sh 参数1 参数2 参数3…
##${0}->表示文件名称###${1}->表示参数1###${2}->表示参数2 echo ${0} ${1} ${2}# 执行脚本代码:./hello.sh "合理" "哈哈"
结果 ./hello.sh 合理 哈哈
$#:获得脚本输入参数个数
# 脚本内容如下: echo ${#} # 执行脚本代码: ./hello.sh "逗你玩" "饿到爆"
结果 2
${*} 显示整个脚本输入参数列表
# 脚本内容如下: echo ${*} # 执行脚本代码: # ./hello.sh "逗你玩" "饿到爆"
结果: 逗你玩 饿到爆
基本运算符
算数运算符
注意:”expr”规定命令
加法
a=8388 b=9688 c=`expr $a + $b` echo "c的值:$c"
结果:c的值:18076
注意 “是键盘左上角 $a + $b之间要有空格
减法
a=8388 b=9688 c=`expr $a - $b` echo "c的值:$c"
结果:c的值:-1300
乘法
a=8388 b=9688 c=`expr $a \* $b` echo "c的值:$c"
结果:c的值:81262944
注意 *要转义一下写成 \*
除法
a=8388 b=9688 c=`expr $b / $a` echo "c的值:$c"
结果:c的值:1
注意 结果是向下取整
求余
a=8388 b=9688 c=`expr $b % $a` echo "c的值:$c"
结果:c的值:1300
关系运算符
“-eq”
“-eq”:检测两个数是否相等,当等返回true
eq 就是equal的缩写
a=32b=34if [ $a -eq $b ]then echo "a等于b"else echo "a不等于b"fi
输出:a不等于b
注意:[ $a -eq $b ] 括号和代码直接有空格
“-ne”
“-ne”:检测两个数是否不相等,不相等返回true
ne 就是not equal的缩写
a=32b=34if [ $a -ne $b ]then echo "a不等于b"else echo "a等于b"fi
输出:a不等于b
“-gt”
“-gt”:检测左边数是否大于右边数,如果是,返回true
gt 就是greater than的缩写
a=32b=32if [ $a -gt $b ]then echo "a大于b"else echo "a小于等于b"fi
输出:a小于等于b
“-lt”
“-lt”:检测左边数是否小于右边数,如果是,返回true
lt 就是less than的缩写
a=32b=32if [ $a -lt $b ]then echo "a小于b"else echo "a大于等于b"fi
输出:a大于等于b
“-ge”
“-ge”:检测左边数是否(大于+等于)右边数,如果是,返回true
ge 就是greater or equal的缩写
a=33b=32if [ $a -ge $b ]then echo " a大于等于b"else echo "a小于b"fi
输出:a大于等于b
“-le”
“-ne”:检测左边数是否(小于+等于)右边数,如果是,返回true
le 就是less or equal的缩写
a=33b=32if [ $a -le $b ]then echo " a小于等于b"else echo "a大于b"fi
输出:a大于b
布尔值运算符
- “!”:非运算,表达式为true,返回true,否则返回false
a=100b=200if [ $a != $b ]thenecho "a不等于b"fi
输出:a不等于b
- “-o”:或运算,有一个表达式为true,则返回true
o or的缩写
a=100b=200if [ $a -lt 200 -o $b -gt 200 ]then echo "成立"fi
输出:成立
注意:中括号的个数和运算符直接的空格
- “-a”:与运算,两个表达式为true,则返回true
a and的缩写
a=100b=200if [ $a -lt 200 -a $b -gt 200 ]then echo "成立"else echo "不成立"fi
输出:不成立
注意:中括号的个数和运算符直接的空格
逻辑运算符
- “&&”:逻辑且->and
a=100 b=200 if [ $a -lt 200 ] && [ $b -gt 200 ] then echo "成立" else echo "不成立" fi
输出:不成立
注意:中括号的个数和运算符直接的空格
- “||”:逻辑 OR
a=100 b=200 if [ $a -lt 200 ] || [ $b -gt 200 ] then echo "成立" else echo "不成立" fi
输出:成立
注意:中括号的个数和运算符直接的空格
字符运算符
“=”
检测两个字符串(也可以数字)是否相等,如果相等返回true
a="JAR"b="逗你玩"if [ $a = $b ]then echo "字符串a等于字符串b"else echo "字符串a不等于字符串b"fi
输出:字符串a不等于字符串b
“!=”
检测两个字符串是否相等,如果不相等返回true
a="JAR"b="逗你玩"if [ $a != $b ]then echo "字符串a不等于字符串b"else echo "字符串a等于字符串b"fi
输出:字符串a不等于字符串b
“-z”
检测字符串长度是否为0,如果是返回true
z 是zero的缩写
a="JAR"if [ -z $a ]then echo "a为空"else echo "a不为空"fi
输出:a不为空
“-n”
检测字符串长度是否为0,如果不是0 返回true
a="JAR"if [ -n "$a" ]then echo "a不为空"else echo "a为空"fi
输出:a不为空
“”
检测字符串是否为空,不为空返回true
a="JAR"if [ -n ]then echo "a不为空"else echo "a为空"fi
输出:a不为空
文件测试运算符
“-d file”
检测文件是不是一个目录,如果是,那么返回true
d是directory的缩写
file="/Users/liyanjun/shell/hello.sh"if [ -d $file ] then echo "是一个目录"else echo "不是一个目录"fi
输出:不是一个目录
“-r file”
检测文件是否可读,如果是,那么返回true
file="/Users/liyanjun/shell/hello.sh"if [ -r $file ] then echo "可读"else echo "不可读"fi
输出:可读
“-w file”
检测文件是否可写,如果是,那么返回true
file="/Users/liyanjun/shell/hello.sh"if [ -d $file ] then echo "可写"else echo "不可写"fi
输出:不是一个目录
“-x file”
检测文件是否是可执行文件,如果是,那么返回true
file="/Users/liyanjun/shell/hello.sh"if [ -x file ] then echo "可执行"else echo "不可执行"fi
输出:可执行
“-x file”
检测文件是否是可执行文件,如果是,那么返回true
file="/Users/liyanjun/shell/hello.sh"if [ -x file ] then echo "可执行"else echo "不可执行"fi
输出:可执行
“-f file”
检测文件是否是一个普通文件(既不是目录,也不是设备文件),如果是,那么返回true
f
file="/Users/liyanjun/shell/hello.sh"if [ -f file ] then echo "普通文件"else echo "不是普通文件"fi
输出:普通文件
“-e file”
检测文件是否存在(包含了:目录和文件),如果是,那么返回true
e exist的缩写
file="/Users/liyanjun/shell/hello.sh"if [ -e file ] then echo "存在"else echo "不存在"fi
输出:存在
流程控制
if
代码结构 a="JAR" b="逗你玩" if [ $a = $b ] then echo "字符串a等于字符串b" fi
“if else”语句
a="JAR" b="逗你玩" if [ $a = $b ] then echo "字符串a等于字符串b" else echo "字符串a不等于字符串b" fi
if-else-if-else”
a="JAR" b="逗你玩" if [ $a = $b ] then echo "字符串a等于字符串b" elif [ $a ] then echo "字符串a不为空" else echo "字符串a不等于字符串b" fi
“for”循环语句
1.
for name in "JAR" "小白菜" "Andy" "雪夜" do echo ${name} done
2.
names=("JAR" "小白菜" "Andy" "雪夜");for name in ${names[*]}; do echo ${name} 是一个; done
3.读取文件列表
file="/Users/liyanjun/Desktop/*"for filename in $file do echo $filenamedone
输出文件下的列表文件
4.嵌套循环
for ((a=1;a<5;a++))do echo a = $a for (( i = 0; i < 10; i++ )); do echo i = $i donedone
“while”循环
1.普通
while(($a<10)) do echo ${a} a=`expr $a + 1` done
2.无限循环
while :do echo "1" #statementsdone
或者
while truedo echo "1" #statementsdone
case语句
语法结构
语法结构
case 值 in
模式1)
代码
;;
模式2)
代码
;;
模式3)
代码
;;
sac
案例
umber=1 case $number in 1) echo "等于1" ;; 2) echo "等于2" ;; 3) echo "等于3" ;; esac
for循环 跳出单个循环
for (( i = 0; i < 10; i++ )); do if [ $i == 5 ] then echo "退出循环" break; fidone
for循环 跳出内部循环
for (( i = 0; i < 5; i++ )); do echo "外层循环的值是 ${i} " for (( j = 0; j < 5; j++ )); do echo "内层循环的值是 ${j}" if [ ${j} == 2 ] then echo "退出内部循环" break; fi donedone
for循环 跳出外部部循环
# for循环 跳出外部部循环for (( i = 0; i < 5; i++ )); do echo "外层循环的值是 ${i} " for (( j = 0; j < 5; j++ )); do echo "内层循环的值是 ${j}" if [ ${j} == 2 ] then echo "退出内部循环" break 2 #退出的层数 2表示退出2层 fi donedone
- shell学习数组、基本运算符
- Shell学习之基本运算符
- Shell 基本运算符
- Shell 基本运算符
- shell基本运算符
- Shell 基本运算符
- Shell--基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell 基本运算符
- Shell基本运算符
- Shell教程(三):数组/Arrays、基本运算符
- Shell入门(三)数组、基本运算符
- 数据结构 图的邻接矩阵表示法
- ActiveMQ解决分布式事务方案以及代码实现(一)
- Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageExce
- Linux On Window10 以及 Fish Shell 的配置使用
- ActionBar,DrawerLayout打开关闭
- shell学习数组、基本运算符
- 海亮初中第四大周测试回顾与整理
- 文章标题
- Matplotlib一些基础用法
- ccf 201709-4 通信网络 BFS遍历
- iOS逆向工程之Hopper中的ARM指令详解
- AUTOCAD学习笔记7:单相桥式整流滤波电路的绘制
- 121. Best Time to Buy and Sell Stock
- 2017西安区域赛现场赛