というディレクトリの下には、特定のタスクを実行したいa
サブフォルダがたくさんあります。誰もが同じです。次のことを行いますが、最初のサブディレクトリでのみ機能します。
for i in "a/*"
do
#echo $i
cd $i
mkdir test
mv *_no test
touch aaa
cd ..
done
上記のコードを使いたいですa
。
ベストアンサー1
最初のcd
chdirは最初のディレクトリ(2つのレベルのサブディレクトリ)に移動します。cd
1つのレベルだけが戻ってきたので、その後は2番目のレベルに進むことはできません。つまり、始まった場所に戻りません。しかし、それにもかかわらず、まだ「a / *」という1つの値を繰り返しています。
この内容を引用したため、拡張されません。
しかし、周囲に引用符を入れることを忘れたので、$i
その時点では引数に拡張されますcd
。
コードには他の多くの問題があります。
改善のためのいくつかの提案:
for i in a/*/; do
(
cd -- "$i" &&
mkdir -p test || exit
mv -- *_no test
touch aaa
)
done