Я пытаюсь определить в сценарии оболочки, является ли файл символической ссылкой, указывающей на каталог. Это то, что я делаю:
if [[ -L "$out_dir" && -d "$out_dir" ]]
then
echo "Dir is a symlink"
else
echo "Dir is not a symlink"
fi
Однако это не удается. Некоторые эксперименты:
bash-3.2$ ls -ail .. total 16 8004466 drwxr-xr-x 10 username 1177235957 340 Jul 18 15:41 ./ 1020189 drwxr-xr-x 10 username 1177235957 340 Jul 18 15:16 ../ 8004467 drwxr-xr-x 12 username 1177235957 408 Jul 18 15:16 .git/ 8004528 -rw-r--r-- 1 username 1177235957 501 Jul 18 15:16 .gitignore 8004919 lrwxr-xr-x 1 username 1177235957 22 Jul 18 15:41 Dependencies -> ../../lmi/Dependencies
так ../Dependencies
, согласно ls, являются символической ссылкой, однако:
bash-3.2$ test -L ../Dependencies bash-3.2$ echo $? 0 bash-3.2$ test -h ../Dependencies bash-3.2$ echo $? 0
Разве оба из них не должны возвращать 1? Я что-то неправильно понимаю о том, как это должно работать? Как можно достичь моей цели - определить, является ли файл символической ссылкой, указывающей на каталог?