Shell 括号
这篇包含中括号[]及尖括号<,大括号 {} 请看 Shell-03-字符。
[TOC]
中括号
[] 和 [[]] 区别
[] 和 [[]] 区别当使用
-n或者-z判断变量是否为空时,[]需要在变量的外侧加上双引号,[[]]则不用。[ -n "${a}" ] [[ -n ${a} ]]使用
[[]]时,不能使用-a或者-o对多个条件进行连接。使用
[]时,使用-a或者-o对多个条件进行连接,-a或者-o必须被包含在[]之内。使用
[]时,如果使用&&或者||对多个条件进行连接,&&或者||必须在[]之外。[[ $a -ge 3 && $b -ge 4 ]] [ $a -ge 3 -a $b -ge 4 ] [$a -ge 3] && [$b -ge 4]使用符号
=~匹配正则表达式时,只能使用[[]]。使用
>或者<判断字符串的 ASCII 值大小时,如果结合[]使用,则必须对>或者<进行转义。[[ $a =~ [0-9]{11} ]]
[[]]更适合逻辑运算,(())更适合数值运算。
尖括号
<
<将文件的内容作为标准输入
cat FILENAME 和 cat < FILENAME 区别
cat FILENAME 和 cat < FILENAME 区别cat FILENAME:打开一个文件,并标准输出。
cat < FILENAME:Shell 打开文件,并作为 cat 的标准输入。
文件权限不同,可能造成不同的结果。
<<
<<here document
EOF 和 'EOF' 区别
EOF 和 'EOF' 区别如果没有引号,文档中的任何变量,转义等都将正常显示。
<<<
<<<here string
将 <<< 之后的字符串传递给命令,作为命令的标准输入。
<()
<()传递需要打开和读取的文件的名称。
< <()
< <()将<()产生的文件输入重定向到命令中。
管道和输入重定向将内容推送到 STDIN 流。进程替换运行命令,将其输出保存到特殊的临时文件,然后传递该文件名代替命令。无论您使用什么命令,都将其视为文件名。请注意,创建的文件不是常规文件,而是在不再需要时自动删除的命名管道。
Last updated
Was this helpful?