首页 > 系统相关 >shell_条件判断_[]中括号

shell_条件判断_[]中括号

时间:2023-10-10 10:44:22浏览次数:34  
标签:shell mrxu 判断 echo sh 中括号 && localhost myshell

条件测试
条件测试[]中括号

脚本中经常进行条件测试,用的最多的,都是中括号[ ]

test 和[] 中括号的作用是意义的;只是 中括号[],前后的空格必须有

注意!!!

  1. 中括号[],前后的空格必须有

  2. 在条件测试中使用变量,必须添加双引号

[ -n "${filename}" ]

[root@localhost tmp]# [ -f "$filename1" ]&& echo ok || echo no
ok
[root@localhost tmp]# rm -f demo1.sh 
[root@localhost tmp]# [ -f "$filename1" ]&& echo ok || echo no
no
[root@localhost tmp]# echo $filename1 
demo1.sh
[root@localhost tmp]# touch $filename1 
[root@localhost tmp]# [ -f "$filename1" ]&& echo ok || echo no
ok
[root@localhost tmp]# [ -f $filename1 ]&& echo ok || echo no  ####自己感觉没加引号也能输出,但还是加上吧
ok
[root@localhost tmp]# rm -f demo1.sh 
[root@localhost tmp]# [ -f $filename1 ]&& echo ok || echo no     
no
[root@localhost tmp]# 
###-a 多重判断and的意思
##-r  验证可读的属性与前面的条件判断参数都通用
[mrxu@localhost myshell]$ [ -r "mytest01.sh" -a -e "mytest01.sh" ]&& echo "read ok" || echo "read no"
read ok
[mrxu@localhost myshell]$ chmod 0 mytest01.sh 
[mrxu@localhost myshell]$ [ -r "mytest01.sh" -a -e "mytest01.sh" ]&& echo "read ok" || echo "read no"
read no
[mrxu@localhost myshell]$ [ -r "mytest01xxx.sh" -a -e "mytest01.sh" ]&& echo "read ok" || echo "read no" ###改变第 一个条件让他false
read no
条件测试[[]]双中小括号

[[条件表达式]]

验证文件是否有权限

注意:root是超级管理员,对于权限学习需要切换用户

####双中括号与中括号用法一致,但是感觉没法多重判断,会报错
[mrxu@localhost myshell]$ 
[mrxu@localhost myshell]$ [[ -r "mytest01xxx.sh"  ]] && echo "read ok" || echo "read no"
[mrxu@localhost myshell]$ [[ -r "mytest01xxx.sh" -a -e "mytest01.sh" ]] && echo "read ok" || echo "read no" 
-bash: 条件表达式中有语法错误
-bash: `-a' 附近有语法错误
[mrxu@localhost myshell]$ 
######
[mrxu@localhost myshell]$ chmod a-r mytest02.sh
[mrxu@localhost myshell]$ [ -r "mytest02.sh" ]&& cat mytest02.sh ||echo "对不起你没读取权限"
对不起你没读取权限
[mrxu@localhost myshell]$ chmod a+r mytest02.sh 
[mrxu@localhost myshell]$ [ -r "mytest02.sh" ]&& cat mytest02.sh ||echo "对不起你没读取权限"
[mrxu@localhost myshell]$ [ -w "mytest02.sh" ]&& echo "来阿,快活阿,反正就这个雕样" >mytest02.sh ||echo "对不起你没写入权限"
对不起你没写入权限
[mrxu@localhost myshell]$ chmod a+w mytest02.sh 
[mrxu@localhost myshell]$ [ -w "mytest02.sh" ]&& echo "来阿,快活阿,反正就这个雕样" >mytest02.sh ||echo "对不起你没写入权限"
[mrxu@localhost myshell]$ [ -r "mytest02.sh" ]&& cat mytest02.sh ||echo "对不起你没读取权限"
来阿,快活阿,反正就这个雕样
[mrxu@localhost myshell]$ [[ -w "mytest02.sh" ]]&& echo "来阿,快活阿,反正就这个雕样2" >>mytest02.sh ||echo "对不起你没写入权限"
[mrxu@localhost myshell]$ [[ -r "mytest02.sh" ]]&& cat mytest02.sh ||echo "对不起你没读取权限"
来阿,快活阿,反正就这个雕样
来阿,快活阿,反正就这个雕样2
[mrxu@localhost myshell]$ 



标签:shell,mrxu,判断,echo,sh,中括号,&&,localhost,myshell
From: https://www.cnblogs.com/xjianbing/p/17754027.html

相关文章

  • shell_脚本开发_数值运算
    shell中的数值运算shell中常见的算术运算符运算符意义(*表示常用)+、-加号(正号)、减号(负号)**、/、%乘号、除号、取余(取模)***幂运算*++、--增加及减少,可前置也可放在变量结尾*!、&&、||逻辑非(取反)、逻辑与(and)、逻辑或(or)*<、<=、>、>=比......
  • shell_脚本开发_数值运算_expr命令
    expr命令简单的计算器执行命令可以用expr--help查看文档#expr是以传入参数的形式进行计算的,它基于空格传入参数,但是在shell里的一些元字符(*啊这类)都是有特俗含义的,需要转义[root@localhost~]#expr2+57[root@localhost~]#expr2*5expr:语法错误[root@localh......
  • powershell 获取文件夹的大小
        powershell获取文件夹的大小$startFolder="C:\users"  $colItems=(Get-ChildItem$startFolder |Where-Object{$_.PSIsContainer-eq$True}|Sort-Object)foreach($iin$colItems)  {    $subFolderItems=(Get-ChildItem$i.FullName......
  • 深度学习(判断cuda是否可用)
    安装完pytorch、cuda和cudnn之后,可以先判断是否可用。importtorchprint('CUDA版本:',torch.version.cuda)print('Pytorch版本:',torch.__version__)print('显卡是否可用:','可用'if(torch.cuda.is_available())else'不可用')print('显卡数量:&#......
  • 一次性按要求替换多个文件的名称:PowerShell
      本文介绍基于PowerShell语言,对文件夹中全部文件的名称加以批量替换、修改的方法。  在之前的文章Python批量自动修改大量文件的名称中,我们介绍了基于Python语言,批量修改大量文件的名称的方法。当时我们修改文件名的需求比较复杂,因此选择了用Python语言来实现;而在我们的需求......
  • Shell基本命令小结
    一、mkdir创建目录和rmdir删除目录1创建目录创建单级目录:mkdiraaa创建多级目录mkdir -p bbb/ccc2删除目录删除空目录:rmdiraaa删除非空目录:(1)rmdirccc(2)rmdirbbb/ 二、touch创建文件和rm删除文件创建文件:touchaaa.txt创建多个文件:touchbbb.txtccc.txt 删除文......
  • 仅作笔记用:PowerShell 关闭显示器
    使用这个命令可以手动关闭显示器,这样就不需要第三方工具甚至自己写代码了。(Add-Type'[DllImport("user32.dll")]publicstaticexternintSendMessage(inthWnd,inthMsg,intwParam,intlParam);'-Namea-Pas)::SendMessage(-1,0x0112,0xF170,2)也可以写成CMD的形式......
  • Shell_内置命令外置命令
    内置命令,外置命令shellshell指令内置命令:在系统启动时就加入内存,常驻内存,执行效率更高,但占用资源外置命令:用户需要从磁盘中读取程序文件,再读入内存加载通过linux的type命令验证是否内置,[root@localhost~]#[root@localhost~]#typecdcd是shell内嵌外置命令,也称为,......
  • Shell子串_变量子串案例_统计字符长度以及命令执行时长
    子串案例shell截取字符串通常由两种方式:从指定位置开始截取和从指定字符开始截取从指定位置开始截取:这种方式需要两个参数,除了指定的起始位置,还需要截取长度,才能确定要截取的字符串。既然需要指定其实位置,到底是从字符串的左边开始计数,还是从字符串右边开始计数,答案是shell同......
  • Shell变量_环境变量设置
    环境变量设置环境变量一般指的是用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行。shell通过环境变量确定登录的用户名、PATH路径、文件系统等各种应用。环境变量可以在命令行中临时创建,但是用户退出shell终端,变量即丢失,如要永久生效,需要修改环境变......