猜数字游戏脚本
shell脚本if判断变量介绍
变量 含义
[ -a FILE ] 如果 FILE 存在则为真
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真
[ -c FILE ] 如果 FILE 存在且是一个字符特殊文件则为真
[ -e FILE 如果 FILE 存在则为真
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真
[ -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 存在且是一个套接字则为真
[ -z STRING ] “STRING” 的长度为零则为真
字符串判断
变量 含义
str1 = str2 两个字符串完全相等为真
str1 != str2 两个字符串不完全相等为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
数字判断
变量 含义
int1 -eq int2 两数字相等为真
int1 -ne int2 两数字不相等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1>= int2为真
in1 -lt int2 int1<int2 为真
int1 -le int2 int1 <= int2为真
文件判断
变量名 含义
-r file 用户可读为真
-w file 用户可写为真
-f file -文件为正规文件为真
-x file 用户可执行为真
-d file 文件为目录为真
-c file 存在且是特殊字符文件为真
-s file 文件大小非0为真
-b file 文件为块特殊文件为真
————————————————
版权声明:本文为CSDN博主「早九晚十二」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tootsy_you/article/details/95597376
################################################################################################################################
#!/bin/bash
n=$(echo $((RANDOM%100+1)))
echo $n
while :
do
read -p "请输入1-100以内的数字: " n1
if [ -z "$n1" ];then
echo "必须要输入一个数字,请重试!!"
continue
fi
#如何获取纯数字
#echo 123abc | sed 's/[0-9]//g'
n2=`echo "$n1" | sed 's/[0-9]//g'`
if [ -n "$n2" ];then
echo "输入的不是纯数字,请重试!!"
continue
else
if [ $n -gt $n1 ];then
echo "你猜的数字小了。。。"
continue
elif [ $n -lt $n1 ];then
echo "你猜的数字大了。。。"
continue
else
echo "你猜的数字对了,恭喜你。。。"
break
fi
fi
done
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
shell每日一练: 之 字符串 -z, -n 判断
happylzs2008
于 2019-07-06 10:16:23 发布
1238
收藏 1
分类专栏: shell编程100篇
版权
shell编程100篇
专栏收录该内容
3 篇文章0 订阅
订阅专栏
https://blog.csdn.net/Michaelwubo/article/details/81698307
== 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。
= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的,例如:
1
2
3
4
s1="foo"
s2="foo"
[ $s1=$2 ] && echo "equal"
[ $s1==$2 ] && echo "equal"
最后两个语句是等价的
在 (( )) 中 = 表示赋值, == 表示判断(整数比较),它们不等价,比如
1
2
3
((n=5))
echo $n
((n==5)) && echo "equal"
((n=5)) 表示赋值,((n==5)) 表示判断。
-n : 字符串长度不等于 0 为真 . example : VAR1=1;VAR2=""[ -n "$VAR1" ]为 true[ -n "$VAR2" ]为 false .
-z : 字符串长度等于 0 为真 . example : VAR1=1;VAR2=""[ -z "$VAR1" ]为 false[ -z "$VAR2" ]为 true .
str : 字符串存在为真 . example : VAR1=1;VAR2=""[ $VAR1 ]为 true[ $VAR2 ]为 false .
需要注意的是,使用-z 或-n 判断字符串长度时,变量要加双引号。
举例说明:
# [ -z $a ] && echo yes || echo no
yes
# [ -n $a ] && echo yes || echo no
yes
# 加了双引号才能正常判断是否为空
# [ -z "$a" ] && echo yes || echo no
yes
# [ -n "$a" ] && echo yes || echo no
no
# 使用了双中括号就不用了双引号
# [[ -n $a ]] && echo yes || echo no
no
# [[ -z $a ]] && echo yes || echo no
yes
/ ----------------------second -----------part /
Linux shell if [ -n ] 正确使用方法
https://www.cnblogs.com/ariclee/p/6137456.html
if [ str1 = str2 ] 当两个串有相同内容、长度时为真
if [ str1 != str2 ] 当串str1和str2不等时为真
if [ -n str1 ] 当串的长度大于0时为真(串非空)
if [ -z str1 ] 当串的长度为0时为真(空串)
if [ str1 ] 当串str1为非空时为真
shell 中利用 -n 来判定字符串非空。
错误用法:
ARGS=$*
if [ -n $ARGS ]
then
print "with argument"
fi
print " without argument"
不管传不传参数,总会进入if里面。
原因:因为不加“”时该if语句等效于if [ -n ],shell 会把它当成if [ str1 ]来处理,-n自然不为空,所以为正。
正确用法:需要在$ARGS上加入双引号,即"$ARGS".
ARGS=$*
if [ -n "$ARGS" ]
then
print "with argument"
fi
print " without argument"
————————————————
版权声明:本文为CSDN博主「happylzs2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/happylzs2008/article/details/94835646