在计算机科学中,shell俗称shell(以区别于core),指“向用户提供操作界面”的软件(命令解析器)。这类似于DOS 上的command.com 和更高版本上的cmd.exe。接收用户命令并调用相应的应用程序。
外壳方括号(包括单方括号和双方括号)可用于测试多种条件。
算术比较,例如变量是否为0 [ $var -eq 0 ]。 测试文件属性,例如文件是否存在[-e $var] 或是否是目录[-d $var]。字符串比较[[ $var1=$var2 ]],比如两个字符串是否相同。 [] 在很多情况下,您可以使用稍后介绍的test 命令来代替。
算术比较
对变量或值执行算术条件决策。
[ $var -eq 0 ] # 如果$var 等于0,则返回true [ $var -ne 0 ] # 如果$var 不等于0,则返回true 小心。和] 和操作数。如果不指定空格,会报错。例如,如果出现以下情况,则会报告错误:
[$var -eq 0 ] 或[ $var -ne 0] 其他比较运算符:
运算符含义-gt 大于-lt 小于-ge 大于或等于-le 小于或等于
您可以使用-a(和)或-o(或)组合多个条件进行测试。
[ $var1 -ne 0 -a $var2 -gt 2 ] # 使用逻辑与-a [ $var1 -ne 0 -o $var2 -gt 2 ] # 使用文件系统属性的逻辑或-o test
使用不同的条件标志测试不同的文件系统属性。
运算符含义[ -f $file_var ] 如果变量$file_var 是常规文件路径或文件名(文件),则返回true [ -x $var ] 如果变量$var 中包含的文件是可执行文件,则返回true [ - d $var ] 如果变量$var 中包含的文件是目录,则返回true [ -e $var ] 如果变量$var 中包含的文件存在,则返回true (exists) 返回[ -c $var ] 如果变量$var 中包含的文件,则返回true如果文件是字符设备文件(字符)的路径,则返回true [-b $var] 变量$var 包含如果文件是块设备文件(块)的路径,则返回true [-w $var] 返回true如果变量$var 中包含的文件可写(write) [-r $var] 如果变量$var 中包含的文件可读,则返回true [-L $var] 如果变量$var 包含符号链接(link),则返回true 。
如何使用它:
fpath='/etc/passwd'if [ -e $fpath ]; then echo 文件退出;else echo 不退出;fi 字符串比较
进行字符串比较时,建议使用双方括号[[ ]]。我们建议您避免使用单方括号,因为它们可能会导致错误。
检查两个字符串是否相同。
[[ $str1=$str2 ]] 如果str1 等于str1 和str2,则返回true。也就是说,str1 和str2 包含相同的文本。单等号也可以写成双等号。换句话说,上面的字符串比较相当于[[ $str1==$str2 ]]。
注意=之前和之后的空格。如果忘记包含空格,最终会得到赋值语句而不是比较关系。
字符串的其他比较:
运算符含义[[ $str1 !=$str2 ]] 如果str1 与str2 不同,则返回true [[ -z $str1 ]] 如果str1 是空字符串,则返回true [[ - n $str1 ]] If If str1 is非空字符串。返回真。
您可以使用逻辑运算符和|| 轻松组合多个条件,如下所示:
str1='非空'str2=''if [[ -n $str1 ]] [[ -z $str2 ]];则echo str1 不为空,str2 为空字符串。 fitest命令还可以进行条件检测。使用测试。可以避免使用括号,[]里面的测试条件也可以通过测试来完成。
if [ $var -eq 0 ]; 那么echo 'True' 相当于:
if test $var -eq 0; then echo 'True'; 原文:https://www.linuxprobe.com/?p=177222
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。