While 루프는 파일 내용을 반복하지 않습니다.

While 루프는 파일 내용을 반복하지 않습니다.

기능이 있어요

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.

관련 정보