站库设计网站官网,如何开通免费网站,自学php做网站,动漫网站设计与实现LinuxShell的 中括号[], 双中括号[[]], 双小括号(()) 中括号[], 双中括号[[]], 双小括号(()) 都可用于条件判断 双中括号[[]] , 算是 中括号[]的增强 双中括号[[]] 的[[是bash的关键字, 并不是命令 [remotetvb-f39 /]$ type [[
[[ 是 shell 关键字单双中括号[]和[[]] 既可以用…LinuxShell的 中括号[], 双中括号[[]], 双小括号(()) 中括号[], 双中括号[[]], 双小括号(()) 都可用于条件判断 双中括号[[]] , 算是 中括号[]的增强 双中括号[[]] 的[[是bash的关键字, 并不是命令 [remotetvb-f39 /]$ type [[
[[ 是 shell 关键字单双中括号[]和[[]] 既可以用于字符串比较, 也可以用于整数比较 单双等号和用于字符串比较, -eq用于整数比较 双小括号(())只能用于整数比较, 不能用于字符串比较 用赋值, 用比较 单等号和双等号 和 -eq 中括判字符, 小括判数字
在 中括号[] 双中括号[[]] 中, 单等号和双等号 效果相同, 用于字符串判断
if [ a a ];
if [ a a ];
if [ $VarName1 $VarName2 ];
if [ $VarName1 $VarName2 ];在双小括号(())中, 单等号用于赋值 双等号用于数值大小判断
if (( a3 ));
if (( $a3 ));
for((i0;i10;i));中括号要有空格,双小括号可以没有, 中括号要$,小括号可有可无$
if [ $v hello ];
if [ $v hello ];
if((v6));
if(($v6));中括号双中括号可以用 -eq 进行整数大小判断, 双小括号不能用-eq
if [ $v -eq 6 ];
if [[ $v -eq 6 ]];
if((v6));
if(($v6));test, 可粘贴到控制台测试
vhello
if [ $v hello ]; then echo yes; else echo no; fi
if [ $v hello ]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [ $v -eq 6 ]; then echo yes; else echo no; fi
if [[ $v -eq 6 ]]; then echo yes; else echo no; fi
if((v6)); then echo yes; else echo no; fi
if(($v6)); then echo yes; else echo no; fi
echo ----------------------------------------------------------------
v6
if [ $v hello ]; then echo yes; else echo no; fi
if [ $v hello ]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [ $v -eq 6 ]; then echo yes; else echo no; fi
if [[ $v -eq 6 ]]; then echo yes; else echo no; fi
if((v6)); then echo yes; else echo no; fi
if(($v6)); then echo yes; else echo no; fi测试效果
[zvb-f39 txt]$ vhello
if [ $v hello ]; then echo yes; else echo no; fi
if [ $v hello ]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [ $v -eq 6 ]; then echo yes; else echo no; fi
if [[ $v -eq 6 ]]; then echo yes; else echo no; fi
if((v6)); then echo yes; else echo no; fi
if(($v6)); then echo yes; else echo no; fi
echo ----------------------------------------------------------------
v6
if [ $v hello ]; then echo yes; else echo no; fi
if [ $v hello ]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [[ $v hello ]]; then echo yes; else echo no; fi
if [ $v -eq 6 ]; then echo yes; else echo no; fi
if [[ $v -eq 6 ]]; then echo yes; else echo no; fi
if((v6)); then echo yes; else echo no; fi
if(($v6)); then echo yes; else echo no; fi
yes
yes
yes
yes
bash: [: hello: 需要整数表达式
no
no
no
no
----------------------------------------------------------------
no
no
no
no
yes
yes
yes
yes
对比中括号[]和双中括号[[]]
在Shell中方括号[]和双层方括号[[ ]]都用于条件测试。它们的功能相似但双层方括号提供了更多的功能和灵活性。 单层方括号[] 用于条件测试例如判断文件是否存在、判断字符串是否等于某个值等。不支持正则表达式匹配只能进行简单的字符串匹配。不支持逻辑操作符如-a与、-o或和!非。 双层方括号[[ ]] 与单层方括号类似用于条件测试。支持正则表达式匹配可以使用~操作符进行匹配。支持逻辑操作符如-a与、-o或和!非。提供更好的错误处理和防止字符串拆分和文件名扩展的特性。
下面是一些示例展示了单层方括号和双层方括号的用法
使用单层方括号
if [ -f file.txt ]; thenecho File exists.
fiif [ hello world ]; thenecho Strings are equal.
fi使用双层方括号
if [[ -f file.txt ]]; thenecho File exists.
fiif [[ hello world ]]; thenecho Strings are equal.
fi可以看到双层方括号提供了更多的功能和灵活性因此在编写复杂的条件语句时建议使用双层方括号。