我想在循环中使用ls命令的结果来检查例如第一行是否是目录,第二行等。 例如,我有这个文件夹,其中包含脚本应显示的一个目录:
18_05_2018是目录
答案 0 :(得分:0)
创建一个名为is_file_or_directory.sh的文件,其中包含:
cd "$1" || echo "Please specify a path" && exit
for i in *; do
if [[ -d $i ]]; then
echo "$i is a directory"
elif [[ -f $i ]]; then
echo "$i is a file"
else
echo "$i is not valid"
exit 1
fi
done
使用以下命令使该文件可执行:
sudo chmod +x is_file_or_directory.sh
运行脚本,指定要分析的路径作为参数:
./is_file_or_directory.sh /root/scripts/
输出:
jeeves ~/scripts/stack # ./is_file_or_dir.sh /root/scripts/
databe.py is a file
is_file_or_dir.sh is a file
mysql_flask.py is a file
test is a directory
以下是对引擎盖下发生的事情的更详细解释:
在BASH中,变量$ 1是发送给脚本的第一个参数
在我们的例子中,它是脚本执行其操作的路径
然后我们在循环中使用变量$ i。
$ i content将是$ 1路径中的每个文件/文件夹名称 使用-d和-f,我们检查$ i是文件还是文件夹。
快乐的黑客攻击!