我是bash的初学者,我不明白为什么
#! /bin/sh
if ! [ -d $1 ]; then echo This is not a directory && exit 1; fi
for file in `ls $1`;
do
if [ -f `$1/$file` ]; then
echo $file is a file
elif [ -d $file ]; then
echo $file is a directory
fi
done
在[ -f
$ 1 / $ file ]
答案 0 :(得分:1)
这是因为你已经在&#34中用反引号(``)包围了路径;如果"线。这告诉shell执行文件(毫无疑问,文件夹中的许多文件都不可执行 - 因此错误)。切换到普通报价。
顺便说一句,使用反引号来捕获" ls"在" for"循环是一个坏主意 - 它将破坏包含空格的文件名(这是完全合法的)。