Shell编程中括号判断中赋值语句和判断语句

#!/bin/bash

declare var="xxx"
# without space and use one =
#1.judge whether the assignment statement returns true
echo "----------------------test assignment in bracket --------------------------------"
[ var="yyyy" ] && echo "success"
echo "end"
    # success
[ "$var"="yyyy" ] && echo "success"
echo "end"
    # success
[ "var"="yyyy" ] && echo "success"
echo "end"
    # success
[ var1="yyyy" ] && echo "success"
echo "end"
    # success

# result: yes

#2. judge the assignment whether be taken in bracket
echo "--------------------test assignment whether been taken -----------------------"
[ var="yyyy" ] && echo "$var"
echo "end"
    #xxx
    #end
#result: assignment can‘t be taken in bracket

#3. whether the effect of single = and double = similary
echo "-------------------test single = and double = ------------------------"
[ "$var" == "yyyy" ] && echo "$var"
echo "end"
    #end
[ "$var" = "yyyy" ] && echo "$var"
echo "end"
    #end
var="yyyy"
[ "$var" == "yyyy" ] && echo "$var"
echo "end"
    #yyyy
    #end
[ "$var" = "yyyy" ] && echo "$var"
echo "end"
    #yyyy
    #end
# result: effect same
#4. whether the effect of having space and not space similary
echo "----------------------test space -------------------------------------"
[ "$var"=="yyyy" ] && echo "$var"
echo "end"
    #yyyy
    #end
[ "$var"=="zzzz" ] && echo "$var"
echo "end"
    #yyyy
    #end
#result: always true with no space 

#conclusion:
# with space at both side of = will judge in normal
# don‘t space at both side of = or ==  will always true 

通过上面的测试得出的结论是:

在中括号判断中不使用空格例如  "$var"="xx" 或 "$var"=="xxx"(在= 和== 两边没有空格)则这个判断一直是真

在中括号中使用空格 例如  "$var" = "xx" 或 "$var" == "xxx"(在= 和== 两边有空格) 则这个判断会按照正常的值进行判断,值相等返回true否则返回false

可能会因使用的shell及其版本不同而导致结果不同,我使用的shell是:GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)

时间: 2024-08-13 19:34:09

Shell编程中括号判断中赋值语句和判断语句的相关文章

Linux Shell编程基础

在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐藏  -R 显示文件夹内的内容  -c 按照最后一次修改时间排序  -t 按照修改时间排序输出 echo 显示  -n 不换行 touch  创建一个文件,或者修改文件的访问时间和修改时间 touch -a file 只更改访问时间 -m之更改修改实际那 -t指定特定时间 cp  复制文件 -a 保

【免费下载】全套最新 3.Shell编程 视频教程+教学资料+学习课件+源代码+软件开发工具

3.Shell编程视频教程 网盘地址: 链接:https://pan.baidu.com/s/1-M4wHTMaE8rxjroTTd-9qQ 提取码:qf52 加公众号 获取更多新教程 教程目录大纲 ./3.Shell编程 ├── 11 云计算-Linux系统管理-shell基础 │?? ├── 100 -云计算-Linux系统管理-shell基础-echo命令.avi │?? ├── 101 -云计算-Linux系统管理-shell基础-脚本执行方法.avi │?? ├── 102 -云计算-

shell编程中的条件判断(shell 05)

shell编程中的条件判断条件if-thencase if-then单条件if commandthen commandsfi当command返回码为0时 条件成立 if.sh #! /bin/bash if date then echo "command exec" fi if date123 then echo "command exec1" fi echo "out if" [[email protected] sh]# ./if.sh 20

shell if条件判断中:双中括号与单中括号的区别

电脑重装了系统,登录虚拟机的shell脚本需重写,在为编写的脚本命名时发现存在同名脚本,才想起来是连接公司服务器的登录脚本,不想写俩脚本,怕记混了,那就整合一下.代码如下: #!/bin/bash#zxl.sh 脚本名 if [ $1 == 1 ] then        ssh a.a.a.a else        ssh b.b.b.b fi so easy,运行脚本  ./zxl.sh  1  和  ./zxl.sh  2  成功登录了公司服务器和虚拟机.今天登录的时候,却出问题了. 我

Shell编程之条件判断与流程控制

一.条件判断式语句 1-1.概述 用来判断是与否,客观的而非主观判断,用于进行基本的管理 1-2.按文件类型判断 补充: && 命令1&&命令2 逻辑与(没有数据传递) 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行 || 命令1||命令2 逻辑或(没有数据传递) 当命令1执行不正确时,命令2才会执行 当命令1正确执行时,命令2不会执行 按文件类型判断 记住蓝色部分 两种判断格式: test –e /root/install.log [-e /ro

shell编程之测试,判断,循环

测试,判断,循环 条件测试:判断某需求是否满足,需要由测试机制来实现; 如何编写测试表达式以实现所需的测试;        (1)执行命令,并利用命令状态返回值来判断;$?:上一个命令的返回值0:成功1-255:失败    grep "^&" /etc/init.d/functions &> /dev/null    echo $?  返回0表示有空白行,测试成功;(2)测试表达式;测试方法一:    test expression        test 2&g

shell编程(五)--- 条件判断之算术运算

方法1:let 算术运算表达式 示例1: [[email protected] Scripts]# A=2 [[email protected] Scripts]# B=3 [[email protected] Scripts]# let C=$A*$B [[email protected] Scripts]# echo $C 6 [[email protected] Scripts]# 方法2:$[算术运算表达式] 示例2: [[email protected] Scripts]# echo 

Shell编程(二)-if判断及特殊用法,文件目录属性判断,case判断

[toc] Shell编程(二) 一.shell脚本中的逻辑判断 1.1 判断语句if 1.1.1 格式1: if 判断语句:then command fi 示例1 # vim if01.sh //判断数值大小第一种方法用[],注意前后空格 #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi [[email protected] ~]# sh if01.sh ok [ ] -gt:大于, [ ] -lt:小于, [ ] -ge:大于或等于, [ ] -

shell脚本中实现自动判断用户有无密码

在最近完成老师布置的作业的时候遇到了如何让shell脚本中的命令自动判断一个用户是否已设置密码的问题,虽然看似不是很难的一个问题,但是在这一功能实现的过程中却包含了许多细小的而重要的知识.刚开始小编对此很是头疼,虽然我们查看一个用户是否有密码并不是很难,直接cat /etc/shadow这个文件看看密码位是否有加密的字符就行了,但是让命令自己去判断和匹配就不是很顺利了,小编上网查看后,并没有得到很好的答案,大多数都是人工查看的答案,并不适用于shell脚本中自动的判断,所以在认真对比/etc/p