まあ、これを重複してすぐに終了する前に説明します。私は次のような多くの方法を試しました。
for d in /Applications ; do
echo "$d"
done
しかし、これは戻ります
/アプリケーション
/Applicationsの内容ではありません。
私も次のことを試しました。
#!/bin/bash
FILES=/Applications
for file in $FILES
do
echo $file
done
基本的には同じです。しかし、これを行うと、次のことがわかりました。
#!/bin/bash
for file in *
do
echo $file
done
私のホームフォルダ内のすべてのフォルダを正しく反映しています。何が起こっているのか知っている人はいますか?
ベストアンサー1
これを*
シェルグロービング(パス名拡張)演算子(?
また[]
)と呼び、引用符なしで呼び出すと、現在のディレクトリ内のすべてのファイル(ディレクトリプレフィックスなし)に展開されます。たとえば、プレフィックスを使用すると、/foo/*
ディレクトリ内のすべてのファイルに展開されます/foo
。
特定のファイルを一致させるためにも使用されます。たとえば、foo
現在のディレクトリで始まり終わるファイルだけを一致させるには、globパターンを使用します。bar
foo*bar
したがって、for
ループは次の形式を取ることができます。
for f in foo*bar; do echo "$f"; done
man
シェルワイルドカードの詳細については、シェルページをお読みください。