#!/bin/bash
a=10
b=20
val=`expr $a + $b` # 将 + 符号换成: 减- 乘 \* 除 / 取余 %
echo "a +b = $val" # 响应一个字符串, 和变量的值 $val
if [ $a == $b ] # if 如果,then 然后, echo 响应,fi 结束字句
then # [ $a == $b ] 用绝对等于符号判断两个字符串
echo "a 等于 b "
fi
--------- 逻辑运算符号符合条件就返回true ------------
#相等 -eq 不相等 -ne 大于 -gt 大等于 -ge 小于 -lt 小等于 -le
# 非运算 ! 或运算 -o 与运算 -a
[ $a != $b ] # 变量:a 不等于 b, 非运算
[ $a -lt 60 -a $b -gt 15] # 变量:a <60 且 b>15 与运算
[ $a -lt 100 -o $b -gt 100 ] # 变量:a<100 或 b> 100 或运算
&& # 相当于与运算,满足所有条件;也用于前面成功完成才执行后面
|| # 相当于或运算,满足一个条件就可以;前面无论成功失败就执行后面
= 字符串是否相等; != 判断是否不相等; -z 字符串长度为0;
-n 字符串长度不相等; $ 字符串为空
#------------- 案例 -----------#
### 打印字符串长度
a="123456789" ; echo ${a: 3: 4-2} # echo ${ } 是计算函数,所以:4-2 等于2 如果为负数是倒数,需要添加空格指定
# 截取第3个字符后面的2个字符(不包含第3)
echo ${#a} # 打印字符串长度
setprofile=$(cat /etc/profile | grep eisccnjdk)
# 定义变量为:查看文件过滤字段的行的内容
if [ ${#setprofile} -lt 9 ] # ${#} 符号标识字符串长度
then
echo "变量$setprofile 的长度小于9"
else
echo "变量不小于9"
fi
################################################################################
#!/bin/bash
aa="/root/d" # 定义变量为一个目录
for bb in $aa/* ; do # 将 aa 的值赋给 bb 继承
if [ -d $bb ]; then # if 判断 $bb 变量是目录,然后就:
# -d 目录
rm -rf $bb # 删除一个目录下所有的文件
fi # fi 结束
done
#!/bin/bash
direc="/root/d" # 定义direc变量 的值为目录
for dir2del in $direc/* ; do
# dir2del in 是 变量$direc 的值
if [ -d $dir2del ]; then # 判断 $dir2del 是目录,然后就
rm -rf $dir2del # 清空文件夹
fi
done
#!/bin/sh
cat "/root/1.txt" | while read line; do
# 查看文件内容,并将它赋值给变量 line
echo $line; # 以系统默认编码来打印
done
if elif else
用来判断文件的参数:
-r 可读 -b块设备文件 -c 字符设备 -d 目录 -f 普通文件 -g SGID位 -k站着位stick bit
-p 管道 -u SUID -r 可读 -w 可写 -x 执行 -s 文件为空 -e 文件存在
shell中条件判断if中的-z到-d的意思
[ -a FILE ] 如果 FILE 存在则为真。
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则为真。
[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
[ -r FILE ] 如果 FILE 存在且是可读的则为真。
[ -s FILE ] 如果 FILE 存在且大小不为0则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。
[ -x FILE ] 如果 FILE 存在且是可执行的则为真。
[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2,or 如果 FILE1 exists and FILE2 does not则为真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。
[ -z STRING ] “STRING” 的长度为零则为真。
[ -n STRING ] or [ STRING ] “STRING” 的长度为非零 non-zero则为真。
[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.
数字判断
[ $count -gt "1"] 如果$count 大于1 为真
-gt 大于
-lt 小于
-ne 不等于
-eq 等于
-ge 大于等于
-le 小于等于
[ STRING1 == STRING2 ] 如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。
[ STRING1 != STRING2 ] 如果字符串不相等则为真。
[ STRING1 < STRING2 ] 如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。
[ STRING1 > STRING2 ] 如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。
逻辑判断:
相等 -eq 不相等 -ne 大于 -gt 大等于 -ge 小于 -lt 小等于 -le
非运算 ! 或运算 -o 与运算 -a
#!/bin/bash
#file=${file:?'必须给出参数'}
file=1.sh # 给变量赋值为一个文件
file=$file # 将参字符串赋值给变量
if [ ! -e $file ]; then # 判断 ! -e 不存在文件,然后就
echo "$file 不存在" # 打印字符串
exit 1 # 文件不存在就退出程序,不向下执行
fi # if 和 fi 开始与结束
if [ -d $file ]; then # 判断变量$file -d 是文件夹,然后就
echo "$file 是一个目录" # 打印字符串
if [ -x $file ]; then # 判断变量 -x 执行,然后就
echo "可以"
else
echo "不可以"
fi
echo "对此进行搜索" # echo 打印变量
elif [ -f $file ]; then # 循环语句 if elif else
# -f 是普通文件,然后就
echo "$file 是一个正规文件"
else # else 其他的情况
echo "$file不是一个正规文件"
fi
if [ -O $file ]; then # -O 用户组
echo "你是$file的拥有者"
else
echo "你不是$file的拥有者"
fi
if [ -r $file ]; then # -r 可读
echo "你对$file拥有"
else
echo "你并不对$file拥有"
fi
echo "可读权限" # 连接打印:上一条和本条信息顺序连在一起了
if [ -w $file ]; then # -w 可读
echo "你对$file拥有"
else
echo "你并不对$file拥有"
fi
echo "可写权限"
if [ -x $file -a ! -d $file ]; then # -x 可执行
echo "你拥有对$file"
else
echo "你并不拥有对$file"
fi
echo "可执行的权限"
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 16:08:24,Processed in 0.01216 second(s).