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