저는 Unix/Gnu/Linux를 처음 접했고 더 많은 것을 배우려고 노력하고 있습니다.
루프 내에서 2개의 스크립트를 실행해야 하는 상황이 있는데, 이 두 스크립트를 순차적으로 실행해야 합니다.
예를 들어:
TargetFile = /data/TEST.CSV
while read -r line || [ -n "$line" ];
do
script_copy_file.sh $Parm1 $Parm2 $Parm3
script_split_file.sh $Parm1 $Parm2
done < "$TargetFile"
script_copy_file이 완료된 후 script_split_file.sh가 실행되도록 이 두 스크립트 사이에 무언가를 추가해야 합니까? && 사용에 대한 몇 가지 기사를 읽었지만 모범 사례에 대한 조언을 얻으려고 왔습니다.
아니면 순차적으로 자연스럽게 실행되나요?
제 질문이 웃기거나 이상했다면 죄송합니다. 저는 배우고 이해하려고 노력할 뿐입니다. 도움을 주셔서 감사합니다.
감사해요.
답변1
다음과 같이 실행됩니다.
script_copy_file.sh
script_split_file.sh
script_copy_file.sh
script_split_file.sh
script_copy_file.sh
script_split_file.sh
…
실행하고 싶다면
script_copy_file.sh
script_copy_file.sh
script_copy_file.sh
script_split_file.sh
script_split_file.sh
script_split_file.sh
그런 다음 두 개의 루프가 필요합니다.
다른
=
변수를 인용하고 할당하기 전에 공백 없이 올바른 변수를 사용하고 있는지 고려한 다음 이를 사용하여 shellcheck
스크립트를 확인해야 합니다.
.sh
파일 이름 끝에 사용하는 것도 나쁜 생각입니다. 문제가 발생하지 않을 수도 있습니다. 오늘은 아니고 내일은 아니지만 언젠가는 문제가 발생할 수 있습니다. Python으로 무언가를 다시 구현할 때 얼마나 많은 스크립트를 다시 작성해야 하는지 상상해 보세요.
답변2
스크립트의 서로 다른 줄에서 두 스크립트를 호출하면 질문에 표시된 것처럼 두 스크립트는 개행 문자 외에는 아무 것도 없이 차례로 실행됩니다.
&&
두 번째 스크립트를 원한다면 그냥 넣고 싶습니다 .오직첫 번째 스크립트가 성공적으로 종료되면 실행됩니다.
호출 사이에 줄 바꿈(또는)을 사용하면 ;
첫 번째 스크립트가 성공적으로 실행되는지 여부에 관계없이 두 번째 스크립트가 실행됩니다.
그 사이에 사용하면 ||
첫 번째 스크립트가 실패하는 경우(0이 아닌 종료 상태를 반환하는 경우)에만 두 번째 스크립트가 실행됩니다.
코드를 보면 매개변수 확장도 큰따옴표로 묶어야 합니다.
script_copy_file.sh "$Parm1" "$Parm2" "$Parm3"
script_split_file.sh "$Parm1" "$Parm2"
...그리고 과제 주위에는 공백이 있어서는 안 됩니다 =
.
관련된: