bash目录/链接测试失败

时间:2015-02-03 17:38:56

标签: bash shell unix

我做了一个简单的脚本来检查目录是否存在以及是否是链接。但它不起作用,我不知道为什么。请求帮助。

if [ -d "$test"] ; then
  if [ -L "$test"] ; then
     echo "1 is a symlink link"         
  else
     echo "DIR 1 found"
  fi  
fi



if [ -d "$test01"] ; then
  if [ -L "$test01"] ; then
     echo "2 is a symlink link"         
  else
     echo "DIR 2 found"
  fi
fi

来自终端:

-rwxrwxr-x 1 zero zero  317 Feb  3 18:22 dir_check.sh
-rwxrwxr-x 1 zero zero  339 Feb  3 18:17 dir_check.sh~
drwxrwxr-x 2 zero zero 4096 Feb  3 11:15 test
lrwxrwxrwx 1 zero zero   11 Feb  3 18:18 test01 -> /home/zero/
zero@z_pc:~/Desktop/bash_pro$ ./dir_check.sh 
1 is a symlink link
2 is a symlink link

第一个应该是“发现DIR 1”

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。

if [ -d "test" ] ; then
  if [ -L "test" ] ; then
     echo "1 is a symlink link"         
  else
     echo "DIR 1 found"
  fi  
fi



if [ -d "test01" ]; then
  if [ -L "test01" ]; then
     echo "2 is a symlink link"         
  else
     echo "DIR 2 found"
  fi
fi

说明: $test$test01是指名称为testtest01的变量的值,而不是实际的目录名称。正如评论者指出的那样,你的代码在结束]之前错过了一个空格,这是这里的罪魁祸首,另外还有你扩展不存在的变量而不是传递字符串的事实。