2016-05-11 8 views
1

内の変数として範囲:異なる数は、私はしばらくの間、これを思ってきたが、私は多くの場合、私は次の規則で指定のフォルダやファイルを持っているような状況にしてきたバッシュ

  1. 1R143D1B
  2. 2R143D1B
  3. 3R243D1B
  4. 4R343D1B
  5. 5R343D1B

最初の数字(1-5)は、たとえばスキャンを表します。 'R'(1,1,2,3)の直後の2番目の数字は1日を表します。 43D1Bは件名です。

私はいつも私が複数の件名のフォルダに入る必要がある状況にあります(たとえば、命名規則を変更する唯一のものは '43D1B'から '44U2A'のような他の主題の値に変わります) 'for'ループのような方法があるので、cp(または他の)コマンドをハードコーディングせずにこれらの値を生成できるようにすることができます。

ハードコードする代わりに、たとえばcp /home/1R143D1B/1R143D1B.file /newfolderを実行して、この50回を実行すると、最初の値(スキャン値)をループまたは配列変数に、2番目の値(日の値)別の変数のように私は何かをすることができますcp /home/${var1}R${var2}${subject}/${var1}R${var2}${subject}.file /newfolder

しかし、私はこれを論理的に考えると、上記の規則がそのように設定されているので、私はそれについての最良の方法はわかりません - スキャン1 & 2は常に1日目スキャン3は常に2日目に、スキャン5は常に3日目ですので、数字1〜5はすべて数字1〜3に関連付けられていないので、ループが機能するかどうかわかりません他に何が適切かはっきりしない。 誰かがこれについて別の方法で話すことができますか?

+0

なぜワイルドカードを使用できないのですか? 'cp /home/?R?"$subject"/?R?"$subject".file/newfolder'のように。 – choroba

答えて

0

ループの変数をより適切に使用します(例: 1R1 2R1 3R2 4R3 5R3