スクリプト内のループをコマンドライン引数として使用する

スクリプト内のループをコマンドライン引数として使用する

したがって、特定の拡張子を持つファイルを特定のフォルダ(コマンドライン引数でユーザーが選択したファイル)にソートしようとしています。

$1(.jpg) $2(.docx) などを想定しましょう。

スクリプトはすべてうまくいきますが、ファイルをフォルダーにソートするループを作成しようとしています(単に拡張子に従って.jpgをjpgフォルダーに入れるので、デフォルトではmv .$1 $1)。コマンドライン引数がなくなるまで(5つがあると仮定)、コマンドライン引数に常に+ 1を追加するようにループを実行し、引数がない場合は、割り当てられていないファイルを選択したフォルダに移動しますか?

これが私がしたいことです。

function sorting {
count = 1
while [ $count -le 5 ]; do
mv .$count $count
count=$((count +1))
done 
} 

次に、sortを使用してスクリプトから関数を呼び出そうとします。

ベストアンサー1

パラメータのインデックスは必要ありません。これを行うことができます。

for file in "$@"
do
   # apply command to "$file"
done
# work here on remaining files in directory

この$file変数は入力パラメーターの連続値を使用します。構文に注意してください"$@"。これは、引数(ファイル名)にスペースが含まれていても、まだ1つの単位で処理されることを保証します。

おすすめ記事