Structure of Bash conditional - variable versus directory
我有一个关于将在bash命令行中使用的条件语句结构的问题。
这个问题显示:
1 | if [ -z"${VAR}" ]; then echo"VAR is unset or set to the empty string" |
这里,似乎只有当变量
但是,对于目录,此问题显示:
1 | if [ -d $directory_name ]; then echo"Directory already exists" |
这里,似乎只有当变量
我的问题:我最近试图检查一个变量是否存在。当我试图对目录应用相同的逻辑时,我惊讶地发现它不能做到。以下是我的尝试:
1 2 | dir_full_path='/mnt/iso' if [ -d $dir_full_path ]; then echo 'Directory does not exist'; else echo 'Does exist'; fi |
当我运行这两行时,目录路径
问题:这是非常令人困惑的,因为看起来条件的相同结构不能用于目录和变量。这是真的吗?如果是这样,那么这个差异是否在某个地方记录下来了?
下面是这些命令的正确使用,可以通过运行帮助测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if [ -z"$j" ] then echo '$j is empty' fi if [ -n"$j" ] then echo '$j is not empty' fi if [ -d /mnt/iso ] then echo '/mnt/iso is a directory' fi |