bash中的[test]和[[test]]有什么区别?
bash中的[test]和[[test]]有什么区别? 当一个比另一个更合适时,bash中的[test]和[[test]]有什么区别?,bash,testing,conditional-statements,Bash,Testing,Conditional Statements,bash中的[test]和[[test]]有什么区别? 当一个比另一个更合适时,是什么最后怎么办 if [[ -z $DIRECTORY ]]; then DIRECTORY=html fi if [ ! -d "$DIRECTORY" ]; then echo installation directory "'${DIRECTORY}'" does not exist exit 1 fi [[是一个bash关键字,与[命令类似(但功能更强大)。请参阅,除非您是为
是什么代码>最后怎么办
if [[ -z $DIRECTORY ]];
then
DIRECTORY=html
fi
if [ ! -d "$DIRECTORY" ]; then
echo installation directory "'${DIRECTORY}'" does not exist
exit 1
fi
[[
是一个bash关键字,与[
命令类似(但功能更强大)。请参阅,除非您是为POSIX sh编写的,否则我们建议在执行以下操作时使用单方括号:
- 检查文件中的某些内容,并希望使用模式(例如星号):
如果[-L$file];那么
- 检查艺术表达式:
如果[$a-lt$b];则
- 检查带有字符串的内容,并希望使用
”
,并将特殊字符视为正常字符(例如星号):如果[-z“$string”];则
当我们:
- 想要使用带字符串的模式(例如星号):
如果[[“$string1”==*[sS]tring*];那么
- 文件名中的块模式(例如星号)例如,我们搜索名为*.sh的文件:
if[[-a*.sh]];然后
- 要使用运算符&&和| |:
如果[[$a==3 | | b==4];那么
- 不想将字符串放入
“
[
代表shell,[[
代表bash
例如:
尝试[$A-等式1]
:如果未设置$A
,则会引发错误。
[$A-eq 1]]
将起作用。和的可能重复。你做了一个相当人为的区分,因为你在单括号下列出的所有内容都可以用双括号完成。当然你是对的。这只是写下了我记得何时使用哪个括号的方式:)我的观点是,你不需要对其中任何一个使用单括号。使用单括号如果您编写的代码需要与POSIX兼容,请使用双括号;如果您的代码只需要在bash
下运行/bin/[/code>在功能上也等同于/usr/bin/test
。