다음 bash를 사용하면 "list.txt" 파일에 이름이 포함된 모든 폴더에서 명령 1,2,3을 실행할 수 있습니다.
#!/bin/bash
cat list.txt | while read i
do
command1 &
command2 &
command3 &
done
코드의 명령 1,2,3은 "list.txt" 파일에 이름이 포함된 모든 폴더에서 함께 실행됩니다. 모든 폴더에서 명령을 차례로 실행하려면 어떻게 해야 합니까(예: 첫 번째 명령이 완료되면 두 번째 명령이 시작되는 등...). 명령 사이에 "대기"를 사용해 보았지만 작동하지 않습니다! 여기에 제안된 솔루션여러 폴더에 대해 연속적으로 명령 실행 효과적인! 다른 해결책을 찾고 있어요
답변1
&
이전 명령이 완료된 후 다음 명령이 실행되도록 제거합니다 .
답변2
순차적으로 실행하고 싶지만 여전히 백그라운드에서 실행하고 각 명령의 반환 값에 신경 쓰지 않는 경우 다음을 수행할 수 있습니다.
#!/bin/bash
cat list.txt | while read i
do
{ command1; command2; command3; } &
done
성공한 경우에만 실행하려면 다음을 command2
사용할 수 있습니다.command1
&&
#!/bin/bash
cat list.txt | while read i
do
command1 && command2 && command3 &
done
포그라운드에서 모든 것을 동기적으로 실행하려면 &
완전히 제거하면 됩니다.
#!/bin/bash
cat list.txt | while read i
do
command1
command2
command3
done
답변3
while read -r i #read directory as a raw line
do
cd "$i" #cd into the directory
command1 #run the commands consecutively
command2
command3
cd - #cd back
done < list.txt
모든 디렉터리 처리를 동시에 실행하려면(명령 1~3이 연속으로 유지됨) 다음을 바꾸십시오.
command1
command2
command3
그리고
(
command1
command2
command3
)&
답변4
이전 명령이 성공한 경우에만 나머지 명령을 실행하려면 &&
연산자가 올바른 선택입니다.
command 1 &&
command 2 &&
command 3
then은 0이 반환된 경우(즉, 성공)와 0이 반환된 경우에만 실행 command 2
됩니다 . 이는 실행이 완료될 때까지 기다리는 것을 의미합니다.command 1
command 3
command 2
command 2
command 1