猜数字游戏脚本

 

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

 

posted @ 2022-09-19 16:45  往事已成昨天  阅读(44)  评论(0编辑  收藏  举报