ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

浅尝shell

2022-02-06 04:00:10  阅读:205  来源: 互联网

标签:返回 shell var1 var2 echo 浅尝 file true


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,var1,var2,echo,浅尝,file,true
来源: https://www.cnblogs.com/Gin1/p/15865221.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有