접두사, 접미사 확장 없이 주어진 목록의 값을 가져오는 스크립트를 작성하고 싶습니다. 이 부분은 성공적으로 작동합니다.
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done
그런 다음 변수를 for 루프에 전달해야 합니다. 그런 다음 변수는 명령에 따라 실행되어야 합니다.
/usr/bin/perl -config=$variable -update
위 명령에서는 변수를 사용하기 위해 반복적인 시도가 필요합니다. 이 문제에 대한 해결책을 아는 사람이 있나요?
답변1
원래 루프를 사용하고 확장하여 명령을 사용하십시오 perl
.
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
/usr/bin/perl -config="$(basename "${name#awstats.}" .conf)" -update
done
또는 제안한 대로 변수를 사용하십시오.
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
config=$(basename "${name#awstats.}" .conf)
/usr/bin/perl -config="$config" -update
done
그러나 실제 Perl이 있는 것 같아서 호출이 perl
약간 혼란스럽습니다.스크립트명령줄에서 누락되었습니다. 나는 실제 통화가 다음과 같을 것이라고 생각했을 것입니다
perl /some/path/somescript.pl -config="$config" -update
그렇지 않으면
/some/path/somescript.pl -config="$config" -update
"동시에"라는 말이 무슨 뜻인지도 혼란스럽습니다. perl
동시에 여러 명령을 실행 하고 싶습니까 ?
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done |
xargs -I {} -P 4 /some/path/somescript.pl -config="{}" -update
이렇게 하면 Perl 스크립트 인스턴스를 최대 4개까지 동시에 실행할 수 있습니다.