shell学习数组、基本运算符
2017-11-02 00:31
253 查看
数组
语法
数组名=(值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”:检测两个数是否相等,当等返回trueeq 就是equal的缩写
a=32 b=34 if [ $a -eq $b ] then echo "a等于b" else echo "a不等于b" fi
输出:a不等于b
注意:[ $a -eq $b ] 括号和代码直接有空格
“-ne”
“-ne”:检测两个数是否不相等,不相等返回truene 就是not equal的缩写
a=32 b=34 if [ $a -ne $b ] then echo "a不等于b" else echo "a等于b" fi
输出:a不等于b
“-gt”
“-gt”:检测左边数是否大于右边数,如果是,返回truegt 就是greater than的缩写
a=32 b=32 if [ $a -gt $b ] then echo "a大于b" else echo "a小于等于b" fi
输出:a小于等于b
“-lt”
“-lt”:检测左边数是否小于右边数,如果是,返回truelt 就是less than的缩写
a=32 b=32 if [ $a -lt $b ] then echo "a小于b" else echo "a大于等于b" fi
输出:a大于等于b
“-ge”
“-ge”:检测左边数是否(大于+等于)右边数,如果是,返回truege 就是greater or equal的缩写
a=33 b=32 if [ $a -ge $b ] then echo " a大于等于b" else echo "a小于b" fi
输出:a大于等于b
“-le”
“-ne”:检测左边数是否(小于+等于)右边数,如果是,返回truele 就是less or equal的缩写
a=33 b=32 if [ $a -le $b ] then echo " a小于等于b" else echo "a大于b" fi
输出:a大于b
布尔值运算符
“!”:非运算,表达式为true,返回true,否则返回falsea=100 b=200 if [ $a != $b ] then echo "a不等于b" fi
输出:a不等于b
“-o”:或运算,有一个表达式为true,则返回true
o or的缩写
a=100 b=200 if [ $a -lt 200 -o $b -gt 200 ] then echo "成立" fi
输出:成立
注意:中括号的个数和运算符直接的空格
“-a”:与运算,两个表达式为true,则返回true
a and的缩写
a=100 b=200 if [ $a -lt 200 -a $b -gt 200 ] then echo "成立" else echo "不成立" fi
输出:不成立
注意:中括号的个数和运算符直接的空格
逻辑运算符
“&&”:逻辑且->anda=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
输出:成立
注意:中括号的个数和运算符直接的空格
字符运算符
“=”
检测两个字符串(也可以数字)是否相等,如果相等返回truea="JAR" b="逗你玩" if [ $a = $b ] then echo "字符串a等于字符串b" else echo "字符串a不等于字符串b" fi
输出:字符串a不等于字符串b
“!=”
检测两个字符串是否相等,如果不相等返回truea="JAR" b="逗你玩" if [ $a != $b ] then echo "字符串a不等于字符串b" else echo "字符串a等于字符串b" fi
输出:字符串a不等于字符串b
“-z”
检测字符串长度是否为0,如果是返回truez 是zero的缩写
a="JAR" if [ -z $a ] then echo "a为空" else echo "a不为空" fi
输出:a不为空
“-n”
检测字符串长度是否为0,如果不是0 返回truea="JAR" if [ -n "$a" ] then echo "a不为空" else echo "a为空" fi
输出:a不为空
“”
检测字符串是否为空,不为空返回truea="JAR" if [ -n ] then echo "a不为空" else echo "a为空" fi
输出:a不为空
文件测试运算符
“-d file”
检测文件是不是一个目录,如果是,那么返回trued是directory的缩写
file="/Users/liyanjun/shell/hello.sh" if [ -d $file ] then echo "是一个目录" else echo "不是一个目录" fi
输出:不是一个目录
“-r file”
检测文件是否可读,如果是,那么返回truefile="/Users/liyanjun/shell/hello.sh" if [ -r $file ] then echo "可读" else echo "不可读" fi
输出:可读
“-w file”
检测文件是否可写,如果是,那么返回truefile="/Users/liyanjun/shell/hello.sh" if [ -d $file ] then echo "可写" else echo "不可写" fi
输出:不是一个目录
“-x file”
检测文件是否是可执行文件,如果是,那么返回truefile="/Users/liyanjun/shell/hello.sh" if [ -x file ] then echo "可执行" else echo "不可执行" fi
输出:可执行
“-x file”
检测文件是否是可执行文件,如果是,那么返回truefile="/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”
检测文件是否存在(包含了:目录和文件),如果是,那么返回truee 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 $filename done
输出文件下的列表文件
4.嵌套循环
for ((a=1;a<5;a++)) do echo a = $a for (( i = 0; i < 10; i++ )); do echo i = $i done done
“while”循环
1.普通while(($a<10)) do echo ${a} a=`expr $a + 1` done
2.无限循环
while : do echo "1" #statements done
或者
while true do echo "1" #statements done
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; fi done
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 done done
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 done done
相关文章推荐
- Shell入门(三)数组、基本运算符
- Shell学习之基本运算符
- Java学习日记1——基本数据类型和运算符还有数组
- Shell编程学习(7)----Shell基本运算符
- Shell教程(三):数组/Arrays、基本运算符
- 【Shell】-- 入门笔记(1) : 变量、字符串、数组、参数及基本运算符
- [python学习]基本知识之运算符
- Shell学习笔记-基本点
- 基于 Android NDK 的学习之旅-----数据传输(基本数据类型和数组传输)
- swift学习(基本运算符,字符和字符串)
- Shell脚本学习第五天——算术运算符
- luogg_java重新学习_第二章,基本语法03(数组)
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
- 【Swift学习】Swift编程之旅(四)基本运算符
- Hadoop-2.3.0学习(3)——Hadoop Shell的基本操作介绍
- Linux学习 -- Shell基础 -- Bash基本功能
- bash shell 学习 —— 数组
- (转载)Hive学习笔记--Hive Shell基本操作
- 简明pyton教程学习笔记 1-5 介绍+安装python+最初的步骤+基本概念+运算符与表达式
- Shell学习之数组