![bash shell 循环遍历目录列出内容和可执行性](https://linux22.com/image/83671/bash%20shell%20%E5%BE%AA%E7%8E%AF%E9%81%8D%E5%8E%86%E7%9B%AE%E5%BD%95%E5%88%97%E5%87%BA%E5%86%85%E5%AE%B9%E5%92%8C%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%80%A7.png)
我目前正在做作业,我需要获取给定的目录路径,并从中列出其中的文件和目录。同时还包括它是否可执行。我还受到限制,不允许使用除 bash 之外的任何其他语言。
我最初的想法是使用ll
并cut
获得我需要的东西,但我似乎无法让它发挥作用。然后我想我可以使用类似的东西(不起作用,只是一个想法)
read input
for f in $input
do
if [[ -x "$f" ]]
then
echo "$f is executable"
else
echo "$f is not executable"
fi
done
我需要类似的输出,但我不知道如何到达那里
文件名1是可执行文件
文件名2不可执行
目录1是可执行文件
答案1
尝试像
my=($(ls -la $dr |awk {'print $9'}))
echo ${my[@]}
for i in "${my[@]}"
do
if [[ -x "$i" ]]
then
echo "File '$i' is executable"
else
echo "File '$i' is not executable or found"
fi
done
答案2
您正在获取一个目录,然后检查该目录本身是否可执行,而不是按照您想要的方式查看其内容。
read input
for f in ${input}/*; do
echo -n "$f is "
type=""
if [[ -x "$f" ]]; then
type="executable"
else
type="non-executable"
fi
if [[ -d "$f" ]]; then
type="$type directory"
fi
echo "$type"
done
确保 的值$input
是一个可读目录是我留给您的练习。