سؤال

على سبيل المثال فشل هذا الخط:

$ nohup for i in mydir/*.fasta; do ./myscript.sh "$i"; done > output.txt&
-bash: syntax error near unexpected token `do

ما هي الطريقة الصحيحة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

لأن "Nohup" يتوقع أمرًا من كلمة واحدة وحججه - وليس بنية حلقة قذيفة. يجب أن تستخدم:

nohup sh -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done >output.txt' &

نصائح أخرى

يمكنك القيام بذلك على سطر واحد ، ولكن قد ترغب في القيام بذلك غدًا أيضًا.

$ cat loopy.sh 
#!/bin/sh
# a line of text describing what this task does
for i in mydir/*.fast ; do
    ./myscript.sh "$i"
done > output.txt
$ chmod +x loopy.sh
$ nohup loopy.sh &

بالنسبة لي ، فإن حل جوناثان لا يعيد توجيهه بشكل صحيح إلى الإخراج. هذا واحد يعمل بشكل أفضل:

nohup bash -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done' > output.txt &

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top