스크립트를 통해 여러 프로필을 실행하는 방법은 무엇입니까?

스크립트를 통해 여러 프로필을 실행하는 방법은 무엇입니까?

구성 파일에서 변수를 가져오는 bash 스크립트를 작성했습니다. 다음과 같이 명령줄에서 전달합니다.

./my_script.sh ./config1.conf

계속해서 실행해야 할 구성을 더 많이 만들면서 이제 모든 구성을 완료하려면 많은 명령을 실행해야 합니다. rsyslog와 같이 01-first_config.conf, 10-config_ten.conf, 20-config_twenty.conf 등의 번호를 지정하여 모든 구성을 통해 스크립트를 실행하는 방법이 있는지 궁금합니다. 다음을 시도했지만 첫 번째 파일만 실행됩니다.

./my_script.sh ./*.conf

모든 변수를 별도의 섹션이 있는 파일에 넣을 수도 있지만 각 섹션에는 기본적으로 스크립트에 필요한 모든 변수의 전체 목록이 있으므로 그렇게 하는 방법을 잘 모르겠습니다. 이전 부분이 완료된 후 스크립트를 통해 각 부분을 전달하는 방법을 잘 모르겠습니다.

답변1

rsyslog이 작업을 스크립트 내부(예:)에서 수행할지 아니면 외부에서 수행할지 결정해야 합니다 . 네가 원한다면

./my_script.sh ./*.conf

작업하려면 여러 매개변수를 허용하도록 스크립트를 조정해야 합니다. 그것은 마치

for config_file; do
    . "$config_file"
done

또는 다음 파일이 포함된 디렉터리를 하드코딩하거나 전달합니다.

for config_file in /path/to/configs/*.conf; do
    . "$config_file"
done

답변2

이렇게 하면 ./my_script.sh ./*.confglob이 ./my_script.sh ./a.conf ./b.conf ./etc...conf.

./my_script.shglob의 각 파일에 대해 시작 하려면 다음이 귀하의 경우에 적합할 수 있습니다.

$ ls -1 ./*.conf | while read CONF; do ./my_script.sh "$CONF"; done

설명: ls -1glob을 확장하는 데 사용됩니다(한 줄에 파일 1개). while read CONF각 행에 대해 루프를 시작합니다.


대안으로 확장된 glob을 포함하는 ./my_script.sh ./*.conf및 스크립트에서 공백으로 구분된 개별 위치 인수에 해당하는 , , , ... 를 사용할 수 있습니다.$*$1$2$3

관련 정보