`

SHELL中的中括号用法总结

 
阅读更多

摘自:https://www.runoob.com/w3cnote/shell-summary-brackets.html

 

Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试:

  • 算术比较, 比如一个变量是否为0, [ $var -eq 0 ]
  • 文件属性测试,比如一个文件是否存在,[ -e $var ], 是否是目录,[ -d $var ]
  • 字符串比较, 比如两个字符串是否相同, [[ $var1 = $var2 ]]

[] 常常可以使用 test 命令来代替,后面有介绍。

算术比较

对变量或值进行算术条件判断:

[ $var -eq 0]# 当 $var 等于 0 时,返回真[ $var -ne 0]# 当 $var 不等于 0 时,返回真

需要注意的是 [ 与 ] 与操作数之间一定要有一个空格,否则会报错。比如下面这样就会报错:

[$var -eq 0][ $var -ne 0]

其他比较操作符:

操作符 意义
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于

可以通过 -a (and) 或 -o (or) 结合多个条件进行测试:

[ $var1 -ne 0-a $var2 -gt 2]# 使用逻辑与 -a[ $var1 -ne 0-o $var2 -gt 2]# 使用逻辑或 -o

文件系统属性测试

使用不同的条件标志测试不同的文件系统属性。

操作符 意义
[ -f $file_var ] 变量 $file_var 是一个正常的文件路径或文件名 (file),则返回真
[ -x $var ] 变量 $var 包含的文件可执行 (execute),则返回真
[ -d $var ] 变量 $var 包含的文件是目录 (directory),则返回真
[ -e $var ] 变量 $var 包含的文件存在 (exist),则返回真
[ -c $var ] 变量 $var 包含的文件是一个字符设备文件的路径 (character),则返回真
[ -b $var ] 变量 $var 包含的文件是一个块设备文件的路径 (block),则返回真
[ -w $var ] 变量 $var 包含的文件可写(write),则返回真
[ -r $var ] 变量 $var 包含的文件可读 (read),则返回真
[ -L $var ] 变量 $var 包含是一个符号链接 (link),则返回真

使用方法如下:

fpath="/etc/passwd"if[-e $fpath ];then
  echo File exits;else
  echo Doesnotexit;fi

字符串比较

在进行字符串比较时,最好使用双中括号 [[ ]]. 因为单中括号可能会导致一些错误,因此最好避开它们。

检查两个字符串是否相同:

[[ $str1 = $str2 ]]

当 str1等于str1等于str2 时,返回真。也就是说,str1 和 str2 包含的文本是一样的。其中的单等于号也可以写成双等于号,也就是说,上面的字符串比较等效于 [[ $str1 == $str2 ]]。

注意 = 前后有一个空格,如果忘记加空格, 就变成了赋值语句,而非比较关系了。

字符串的其他比较情况:

操作符 意义
[[ $str1 != $str2 ]] 如果 str1 与 str2 不相同,则返回真
[[ -z $str1 ]] 如果 str1 是空字符串,则返回真
[[ -n $str1 ]] 如果 str1 是非空字符串,则返回真

使用逻辑运算符 && 和 || 可以轻松地将多个条件组合起来, 比如:

str1="Not empty"
str2=""if[[-n $str1 ]]&&[[-z $str2 ]];then
  echo str1 is nonempty and str2 is empty string.fi

test 命令也可以从来执行条件检测,用 test 可以避免使用过多的括号,[] 中的测试条件同样可以通过 test 来完成。

if[ $var -eq 0];then echo "True";fi

等价于:

if test $var -eq 0;then echo "True";fi

作者:liuchengxu_

原文:https://blog.csdn.net/simple_the_best/article/details/75915767

分享到:
评论

相关推荐

    shell括号

    - 在圆括号 `()` 的例子中,虽然 `var` 在子Shell中被修改为 `"notest"`,但在父Shell中仍然是 `"test"`。 - 而在花括号 `{}` 的例子中,`var` 的值在当前Shell中被永久修改为 `"notest"`。 另外还有一些关于圆括号...

    shell图形化总结

    在Shell中,可以使用大括号`{}`来组合多个命令,使其在同一个Shell环境中依次执行。例如: ```shell { cmd1; cmd2; cmd3; } ``` 这种方式称为命令组,命令组中的命令实际上是在当前Shell环境中执行的。 当命令组...

    shell 脚本各种括号的用途.docx

    ### Shell脚本括号的用途...以上是对Shell脚本中括号使用的详细介绍,包括了小括号、中括号和大括号的各种应用场景及其特点。这些括号的不同用法使得Shell脚本具有强大的功能和灵活性,可以用来处理各种复杂的任务。

    shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)

    在Shell脚本编程中,括号有着特殊的意义和作用,主要分为五种类型:小括号()、双小括号(())、中括号([])、双中括号([[]])以及大括号({})。下面将详细介绍每一种括号的作用。 1. **小括号()** - 命令组:圆...

    Linux-shell脚本全面学习.pdf

    * 使用花括号来告诉 shell 我们要打印的是哪个变量: `echo "this is the ${num}nd"` 1.1.4 环境变量 * 环境变量是由 `export` 关键字处理过的变量 * 通常情况下仅仅在登录脚本中使用环境变量 1.1.5 Shell 命令和...

    shell基础学习资料

    - **变量引用**:在Shell脚本中引用变量时,直接使用变量名即可,但为了避免变量名与普通文本混淆,推荐使用花括号`{}`进行明确界定。 - **示例**:错误的引用方法与正确的引用方法对比: ```bash num=2 echo ...

    shell模拟实现计算器加减乘除demo

    `readme.txt`文件通常包含有关项目的信息,如作者、许可证、使用方法等。在这个案例中,它可能详细解释了计算器脚本的工作原理,以及如何运行和测试这些脚本。可能还会有一些关于如何修改和扩展脚本的提示,以帮助...

    shell与python文档

    在Shell脚本中,使用export命令可以将变量导出为全局变量,使之在子Shell中也能访问: ```shell export VARIABLE_NAME=value ``` 或者 ```shell declare -x VARIABLE_NAME=value ``` 五、Shell字符串操作 Shell字符...

    Shell 十三问(SHELL 13Q)

    - **`()`**:用于创建子Shell环境,在括号内的命令会在一个新的子Shell中执行。 - **`{}`**:用于创建一组命令,这些命令在一个单一的Shell环境中执行,不会创建新的子Shell。 #### 八、`$(())`、`$()`与`${}`的...

    LINUX与UNIX Shell

    和[]等在Shell中进行文件名匹配,这对于批量处理文件非常有用。Shell输入与输出章节则介绍了echo、read、cat、管道、tee等命令以及如何使用重定向来控制标准输入输出流。 命令执行顺序章节则涉及了如何使用逻辑...

    c shell使用教程

    cmd2)`**:在子shell中执行命令组。 - **`cmd1|cmd2`**:管道命令,使用`cmd1`的输出作为`cmd2`的输入。 - **`cmd1`cmd2``**:命令替换,使用`cmd2`的输出作为`cmd1`的一个参数。 - **`cmd1&&cmd2`**:逻辑与操作,...

    shell编程 之 正则表达式

    #### 小结 通过以上介绍可以看出,正则表达式在Shell编程中有着广泛的应用,无论是简单还是复杂的文本处理任务,都能通过合理构建正则表达式来高效解决。掌握好正则表达式的基本语法和高级用法,能够极大地提高...

    AIX-SHELL基本编程

    Shell 编程是 UNIX/Linux 操作系统中的一种编程方式,它使用 shell 语言来编写脚本,以实现自动化任务和流程。 环境变量是 shell 编程中一个重要概念。在 bash 中定义环境变量的标准方法是使用等号 (=) 将变量名和...

Global site tag (gtag.js) - Google Analytics