기능이 있어요
function abc{
a=$1
b=$2
if [[ $a == $b ]]then;
return 0
else
return 1
fi
}
while 루프에서 이 함수를 사용하고 있습니다.
check="mystring"
while IFS= read -r val; do
echo "-----------------------${val}"
if ! abc "${val}" "${check}"; then
echo "${val} Failure " >> $OUTPUT_LOG_FILE
else
echo "${val} Success " >> $OUTPUT_LOG_FILE
fi
done <my_list.txt
내 list.txt의 내용은 다음과 같습니다.
somestring
otherstring
mystring
문제는 첫 번째 변수만 반복하고 다른 변수는 반복하지 않는다는 것입니다.
답변1
귀하의 스크립트에서 7개의 플래그 오류가 발생하므로 shellcheck
이는 귀하가 실행 중인 스크립트가 아닙니다. 각 오류 코드에는 다음과 같은 자세한 설명이 있습니다.github.com/koalaman/shellcheck/wiki/SC1095
또한 그 안에 있는 모든 확장을 abc
참조해야 합니다.
abc
스크립트에 어떤 가치가 추가되는지 명확하지 않습니다 . 테스트를 인라인으로 작성하는 것은 함수를 호출하는 것보다 훨씬 짧습니다.
$ shellcheck -s bash -
function abc{
a=$1
b=$2
if [[ $a == $b ]]then;
return 0
else
return 1
fi
}
check="mystring"
while IFS= read -r val; do
echo "-----------------------${val}"
if ! abc "${val}" "${check}"; then
echo "${val} Failure " >> $OUTPUT_LOG_FILE
else
echo "${val} Success " >> $OUTPUT_LOG_FILE
fi
done <my_list.txt
In - line 1:
function abc{
^-- SC1095: You need a space or linefeed between the function name and body.
^-- SC1009: The mentioned parser error was in this brace group.
In - line 4:
if [[ $a == $b ]]then;
^-- SC1049: Did you forget the 'then' for this 'if'?
^-- SC1073: Couldn't parse this if expression.
^-- SC1010: Use semicolon or linefeed before 'then' (or quote to make it literal).
In - line 6:
else
^-- SC1050: Expected 'then'.
^-- SC1072: Unexpected keyword/token. Fix any mentioned problems and try again.