Pakan variabel lingkungan melalui bsub (Platform LSF)

0

Saya sepertinya tidak bisa meneruskan variabel lingkungan ke skrip yang dikirimkan ke penjadwal kluster bsub. Ini berfungsi dengan baik ketika saya mengirimkan perintah yang menggunakan variabel lingkungan ini secara langsung, tetapi variabel lingkungan ini tidak dapat digunakan dalam skrip berikutnya. Mengapa begitu, dan bagaimana saya bisa memperbaikinya?

Ini adalah contoh sederhana di mana saya mencoba untuk lulus x=1 ke skrip:

me@cluster:~[407]$ bsub -I -tty -env 'x=1' 'echo .$x.'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590315> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc0243>>
.1.

me@cluster:~[408]$ echo 'echo .$x.' > myechox

me@cluster:~[409]$ more myechox
echo .$x.

me@cluster:~[410]$ chmod +x myechox

me@cluster:~[411]$ bsub -I -tty -env 'x=1' myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590318> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1279>>
..

me@cluster:~[412]$ bsub -I -tty -env 'x=1' 'export x;myechox'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35590340> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1045>>
..

Memperbarui : Ini bekerja:

me@cluster:~[456]$ bsub -I -tty -env 'x=1' 'export x=$x;myechox'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609253> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc0975>>
.1.

Sementara itu, saya juga menemukan itu bsub lebih suka digunakan dengan bsub < scriptfile daripada bsub scriptfile; ini tampaknya diperlukan untuk mengaktifkan parsing dari opsi yang tertanam (menggunakan #BSUB ), dan itu juga menjelaskan mengapa variabel hanya diatur secara lokal (karena tidak ada sub-skrip harus dipanggil).

Namun, sekarang saya juga sudah mencoba ini, yang, anehnya, tidak berfungsi:

me@cluster:~[457]$ bsub -I -tty -env 'x=1' < myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609459> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
..

Perbarui 2 : Saya telah mencoba export ing x pertama, yang memiliki efek yang sama dengan menggunakan -env 'x=1':

me@cluster:~[458]$ export x=1

me@cluster:~[460]$ bsub -I -tty 'echo .$x.'
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35610151> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
.1.

me@cluster:~[459]$ bsub -I -tty < myechox
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35609990> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1140>>
..

Perbarui 3 : Ini, sekali lagi, berfungsi, yang saya anggap sebagai jawaban untuk pertanyaan saya:

me@cluster:~[571]$ (echo export x=$x && cat myechox) | bsub -I -tty
Info: No jobname given, set to: Job_with_no_name
Info: No output file given, set to: output_%J_%I.txt
Info: No memory limit given, set to: 512MB
Info: No runtime limit given, set to: 15min
Job <35641024> is submitted to queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on linuxbmc1045>>
.1.
bers
sumber
Sudahkah Anda mencoba mengatur: ekspor x = 1 dan kemudian menjalankan skrip?
Romeo Ninov
@RomeoNinov: lebih baik lagi: Saya sudah mencoba export x=$x;myechox, dan ini juga berfungsi. Aku ingin tahu apakah ini diharapkan dilakukan seperti itu ...
bers
Bers, ya, jika Anda mengekspor variabel dalam shell itu diisi ke semua contoh subkulit Anda mulai setelah ekspor (yang IMHO apa yang Anda butuhkan :))
Romeo Ninov
@RomeoNinov Oke, saya mengerti. Sementara itu, saya sudah tahu itu bsub lebih suka digunakan dengan bsub < scriptfile daripada bsub scriptfile; ini tampaknya diperlukan untuk mengaktifkan parsing dari opsi yang tertanam (menggunakan #BSUB ). Jadi sementara saya perlu pertanyaan saya, pertanyaan aslinya masih berdiri;)
bers