예를 들어,이 줄은 실패Bash For-loop에서 Unix Nohup을 사용할 수없는 이유는 무엇입니까?
$ nohup for i in mydir/*.fasta; do ./myscript.sh "$i"; done > output.txt&
-bash: syntax error near unexpected token `do
을 할 수있는 올바른 방법은 무엇입니까?
예를 들어,이 줄은 실패Bash For-loop에서 Unix Nohup을 사용할 수없는 이유는 무엇입니까?
$ 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' &
각 파일에 대해 output.txt를 통해이 파일을 쓸 수 있습니까? 거기에 중요한 정보가있는 경우 덮어 쓰지 않으려면'>'대신'>>'을 사용하십시오. –
'output.txt'에 중요한 데이터가 있다면, 추가 모드에서도 프로그램의 출력을 실행하지 않을 것입니다. 나는 새로운 파일을 만들 것이고, 새로운 데이터가 내가 원한 것이라는 사실을 만족할 때만 마스터 파일에 추가 할 수있을 것이다. 물론 YMMV. –
@JonathanLeffler는 질문에 대답하지 않습니다. 나는 이것이 단 한 번 자른다 고 믿습니다. –
내일 한 번에 할 수도 있지만 너무 좋을 수도 있습니다.
$ 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 &
'loopy.sh'가 경로에 없다면 적어도 방금 시도한이 Red Hat 시스템에서'./loopy.sh'와 같이 호출해야합니다. 와. – Tshepang
로 쓸 수 조나단의 솔루션은 OUTPUT.TXT 올바르게 리디렉션하지 않습니다. 이 사람은 잘 작동 :
nohup bash -c 'for i in mydir/*.fasta; do ./myscript.sh "$i"; done' > output.txt &
는 "왜",하지 않을 것을 nohup을()가'execv와'으로 인수를 실행하고,'execv와가()가'커널에 직접 전달되는 인수 벡터를 걸립니다 모든 쉘을 통해. 따라서, 쉘을 원한다면, nohup에게 스스로를 실행하도록 지시해야합니다. –