基本レベルのフォルダ内のフォルダのみを識別する方法を学びたいと思います。例:
- 基本
- -フォルダ1
- -フォルダ2
- -フォルダ3
次のスクリプトで始まります。
#!/bin/bash
LOCATION="/mnt/test/build/"
for folder in $(ls $LOCATION); do
echo "$folder"
done
ただし、スクリプトを実行すると内容全体がエコーされ、フォルダ内にスペースが含まれている場合は2行に名前が追加されます。エコラインをからに"$folder"
変更すると、その'$folder'
フォルダのみがエコーされます。暗黙の記事も良いです。
ベストアンサー1
ls
単にディレクトリの内容を繰り返すのではなく、グローブを使用してください。
#!/bin/bash
LOCATION="/mnt/test/build/"
for folder in "$LOCATION"/*; do
[ -d "$folder" ] || continue
echo "$folder"
done
この[ -d "$folder" ]
コマンドは$folder
ディレクトリかどうかをテストします。そうでない場合は、その項目をスキップしてくださいcontinue
。$LOCATION
と周囲の引用符に注意してください$folder
。スペースが含まれているとスクリプトが$LOCATION
中断されるのを防ぎます。
本当に処理する必要がある場合は、ls
次のように使用してください。
ls "$LOCATION" | while read folder; do
echo "$folder"
done
ループの後にループ内の変数にアクセスする必要があるという追加の制限がある場合は、Bashプロセス置換を使用してください。
while read folder; do
echo "$folder"
done < <(ls "$LOCATION")
Bash マニュアルは次の場所にあります。http://www.gnu.org/software/bash/manual/。