• ベストアンサー

シェルスクリプトに引数を渡す方法?

次のようなシェルスクリプトを作り、バッチ処理で実行したいのですが、うまくいかず困っています。 %ls test.sh data %less test.sh #!/bin/sh calc.exe input=$1 コマンドから通常実行するときは、 % test.sh data でうまく行きます。 これを、qsubを使ったバッチ処理で実行しなければならなくて、 %qsub test.sh data とすると、qsubは引数を1つしか取れないので、構文エラーとなり、うまく入力引数"data"を渡せません。 %qsub "test.sh data" %qsub 'test.sh data' で、引数を1つにしようとしましたが、ダメでした。 引数ファイル名"data"は、名前が変わるので、できるだけ可変になるようにしたいです。 どなたか、解決法もしくは、参考URLなど教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

#2の方の回答の具体化ですが、 test.shを #!/bin/sh calc.exe input=$FILE に直して、 % env FILE=data qsub test.sh で。

yyamada10
質問者

お礼

ご教示ありがとうございます。 具体例を示して頂いて本当に助かりました。No.2様のご教示だけでは、イメージがわきませんでした。おかげさまで、 環境変数を引き渡すオプションをつけて、 qsub -V test.sh とすることで、$FILEをうまく引き渡せて、うまくいっているようです(計算中)。qsubの仕様で、直接引数を渡せるかどうかも、引き続き調べてみようと思います。どうもありがとうございました。

その他の回答 (2)

  • xanadou
  • ベストアンサー率47% (10/21)
回答No.2

私が思いつく手っ取り早い方法は、test.shを以下のように改造することですね。   「dataを引数で受け取る」     ↓   「dataを環境変数で受け取る」 どでしょ?

yyamada10
質問者

お礼

ご教示ありがとうございます。 すばらしいアイデアありがとうございます。No.3さんにもご教示頂き、環境変数を引き渡すオプションをつけて、 qsub -V test.sh とすることで、うまくいっているようです(計算中)。引数を直接取れるかどうかも、引き続き調べてみようと思います。どうもありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

qsub の仕様がよくわからないんですが, 何らかの形で「標準入力から読ませる」ことはできないんでしょうか?

yyamada10
質問者

お礼

ご教示ありがとうございます。 環境変数については、 qsub -v オプションで渡すことができるようですが、 通常の引数については、まだ分かっていません。 マニュアルを探しているのですが、まだ分かりません。 PBS-Proについて、引き続き調べてみようと思います。

関連するQ&A