浅尝shell
2022/2/6 7:12:24
本文主要是介绍浅尝shell,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Shell
运算符
数字运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
算数运算符
# 算数运算符 # + 加法 val=`expr 2 + 2` echo "两数之和为: $val" # - 减法 val=`expr 4 - 2` echo "两数之差为: $val" # * 乘法 val=`expr 2 \* 2` echo "两数之积为: $val" #! tip: 乘号(*)前边必须加反斜杠(\)才能实现乘法运算 # / 除法 val=`expr 4 / 2` echo "两数之商为:$val" # % 取余 val=`expr 8 % 3` echo "8 对 3 取余数得:$val" # = 赋值 var=2 echo "val的值为: $val" # todo 下方用于判断 # == 判断是否相等 var1=2 var2=4 if [ $a == $b ] then echo "a 等于 b" else echo "a 不等于 b" fi # != 判断是否不相等 var1=2 var2=4 if [ $a != $b ] then echo "a 不等于 b" else echo "a 等于 b" fi
# 关系运算符 -gt === a>b a是否大于b a>b? 大于返回true -lt === a<b a是否小于b a<b? 小于返回true -ge === a>=b a是否大于等于b a>=b? 是返回true -le === a<=b a是否小于等于b a<=b? 是返回true -eq === 相等(比较两个数字) 返回true -ne === 不相等(比较两个数字) 返回 true
布尔运算符&逻辑运算符
# 布尔运算符 # shell 与或非运算 -a -o ! # 与运算 var1=30 var2=0 [ $var1 -a $var2 ] # 返回 false 因为0为假 var1=30 var2=31 [ $var1 -a $var2 ] # 返回true 因为两者都为真 # 或运算 var1=30 var2=0 [ $var1 -o $var2 ] # 返回true 因为两者有一个为真 # 非运算 var1=30 [ !$var1 ] # 返回false 因为 var1 为真 取非为假 var1=0 [ !$var1 ] # 返回true 因为 var1 为假 取非为真 # 逻辑运行算符 # && || # && 逻辑 and var1=1 var2=0 [[ $var1 && $var2 ]] # 返回false var1=1 var2=2 [[ $var1 && $var2 ]] # 返回true # || 逻辑 or var1=1 var2=0 [[ $var1 || $var2 ]] # 返回true var1=0 var2=0 [[ $var1 || $var2 ]] # 返回false
字符串运算符
# = 判断两个字符是否相等 var_1='h' var_2='p' [ $var_1 = $var_2 ] # 返回false # != 判断两个字符串是否不相等 var_1='h' var_2='p' [ $var_1 != $var_2 ] # 返回true # -z 判断字符串长度是否不为零 var_1="" if [ -z "$str_A" ]; then echo '长度为零'; else echo "长度不为零";fi # 结果为零 var_1='He' if [ -z "$str_A" ]; then echo '长度为零'; else echo "长度不为零";fi # 结果不为零 # -n 判断字符串长度是否不为零 与 -z相反 # $ 检测字符串是否为空 不为空则返回true
文件测试运算符
文件测试运算符用于测试Unix文件的各种属性
以下的file皆指文件路径*
例如:file="/usr/local/hello.sh"
# -b file 检测文件是否是块设备文件 如果是则返回true [ -b $file ] # -c file 检测文件是否是字符设备文件 如果是则返回true [ -c $file] # -d file 检测文件是否是目录 如果是则返回true [ -d $file] # -f file 检测文件是否是普通文件(既不是目录,也不是设备文件) 如果是则返回true [ -f $file] # -g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] # -k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] # -p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] # -u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] # -r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] # -w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] # -x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] # -s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] # -e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] # todo tip: 其他检查符 -S: 判断某文件是否 socket。 -L: 检测文件是否存在并且是一个符号链接。
字符串
# "" 双引号
读取字符串个数
str=”hello world“ echo "str的长度为: ${#str}"
流程控制
if
if ['判断体'] // if流程开始 then // 执行体 echo '判断为真我被执行' elif // then echo '可能存在多个判断条件 我符合' else // else 不写then echo '我不符合条件 so被执行' fi // 结束此次if判断
for
for str in item1 item2 item3.... itemN # 开始循环的对象 do # 循环体 echo $str done # 结束循环 # 以上内容可以写成一行 但要在注意格式 for str in item1 item2 item3.... itemN; do echo $str; done;
while
#! /bin/bash int=1 while(($int<=5)) # 循环条件 do # 符合条件的循环结果 echo $int let "int++" done # 结束循环
let用法
let arg [arg...]# 要执行的表达式 # 实例操作 no=2 # 自加操作 let 'no++' === let no+=1 # 自减操作 let 'no--' === let no-=1
这篇关于浅尝shell的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南