![bash シェルはディレクトリをループして内容と実行可能性を一覧表示します](https://rvso.com/image/83671/bash%20%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%AF%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E3%83%AB%E3%83%BC%E3%83%97%E3%81%97%E3%81%A6%E5%86%85%E5%AE%B9%E3%81%A8%E5%AE%9F%E8%A1%8C%E5%8F%AF%E8%83%BD%E6%80%A7%E3%82%92%E4%B8%80%E8%A6%A7%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99.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
読み取り可能なディレクトリであることを確認する作業は、皆さんにお任せします。