цикл оболочки bash по каталогу, выводящий список содержимого и исполняемости

цикл оболочки bash по каталогу, выводящий список содержимого и исполняемости

Я сейчас работаю над домашним заданием, и мне нужно взять заданный путь к каталогу и из этого списка файлы и каталоги в нем. Также включая, исполняемый он или нет. Я также ограничен тем, что мне не разрешено использовать какие-либо другие языки, кроме 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

Мне нужно, чтобы на выходе получилось что-то вроде этого, но я не уверен, как этого добиться

file-name1 является исполняемым

file-name2 не является исполняемым

directory1 является исполняемым

решение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Я оставлю вам задачу убедиться, что значение представляет собой читаемый каталог.

Связанный контент