[
및 ]
문자가 bash에 의해 구문 분석되지 않습니다
#\bin\bash
changed_files=$(git diff origin/master..master --name-only)
export PATH=$PATH:pmd/bin
while read each_file
do
if[$each_file == *.java]
then
exec $(run.sh pmd -d $each_file -f text -R rulesets/internal/all-java.xml)
fi
done<$changed_files
출력 :
스크립트는 아래에 표시됩니다 [
은 실제 명령이며 모든 명령을 공백으로 구분해야합니다 (닫는 경우 ]
은 [
의 매개 변수이므로 공백으로 구분해야합니다). 따라서 앞에 및 공백을 배치해야합니다. 대괄호 뒤에.
또한 좋은 측정을 위해 env 변수 주위에 따옴표를 추가했습니다.
또한 pmd 소스 코드 분석기를 실행하려고합니다. 출력은 텍스트 (또는 HTML 등) 보고서입니다. 너는 exec
텍스트 데이터를 읽을 수 없으므로 나는 그 exec도 제거했다.
#\bin\bash
changed_files=$(git diff origin/master..master --name-only)
export PATH=$PATH:pmd/bin
while read each_file
do
if [ "$each_file" == "*.java" ]
then
run.sh pmd -d $each_file -f text -R rulesets/internal/all-java.xml
fi
done<$changed_files
현재 진행중인 문제를 해결하는 데 더 많은 문제가 있지만 사용자의 질문에 대한 답이 있어야합니다.
#/bin/bash
changed_files=$(git diff origin/master..master --name-only)
export PATH=$PATH:pmd/bin
while read each_file
do
run.sh pmd -d $each_file -f text -R rulesets/internal/all-java.xml
done<$changed_files
나는 다시 수정했습니다. each_file
은 이 아닌이 '* .java'가되는 git diff 명령의 결과로 제공됩니다. 그래서 나는 그것없이 모든 항목에 run.sh
을 실행 시켰습니다.
또한 \bin\bash
을 /bin/bash
으로 변경했습니다.
run.sh
은 (는) 제작 한 스크립트입니까? 또는 pmd/bin 폴더에 있습니까? 나는 run.sh를 넣을 필요가 없다고 생각하지만 확실하지 않습니다.
'if' – hek2mgl
...과'['와']'다음에 공백이 누락되었습니다. 그리고 너의 속임수는 고장났다. 그리고'exec' *와 *'$()'를 사용하고 싶습니까? – Biffen
시도'help ['... ...그것은 명령입니다. bash의 구문 요소가 아닙니다. – hek2mgl