私はx個のファイルを持っています:A、B、C ...私がする必要があるのは、これらの各ファイルを最初のコマンドライン引数としてPythonファイルに渡し、他のファイルをすべてのファイルが渡されるまで2番目のコマンドライン引数として渡すことです一度$ 1として。たとえば、最初の反復では、Aは$ 1で、B、C ...は$ 2です。2回目の反復では、Bは$ 1で、A、C ...は$ 2です。私はシフトについて読みましたシェルでコマンドを実行しますが、私の場合に機能するかどうかはよくわかりません(シェルスクリプトも比較的新しいです)。また、Pythonスクリプトに渡すことができるコマンドライン引数の数に制限はありますか?また、ファイルを反復処理する前に、ファイル名のリストを保持する変数を作成したいと思います。ありがとうございました!
Bashには配列があり、${array[@]:start:end}
構文による配列スライシングをサポートしています。ここで、startとendはオプションのインデックスです。それは仕事を成し遂げるのに十分です。
#!/bin/bash
# Store the master list of file names in an array called $files.
files=("$@")
for ((i = 0; i < ${#files[@]}; ++i)); do
# Store the single item in $file and the rest in an array $others.
file=${files[i]}
others=("${files[@]:0:i}" "${files[@]:i+1}")
# Run command.py. Use ${others[*]} to concatenate all the file names into one long
# string, and override $IFS so they're joined with commas.
(IFS=','; command.py "${files[i]}" "${others[*]}")
done
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加