bash 함수를 사용하여 문자열 구문 분석

bash 함수를 사용하여 문자열 구문 분석

일부 코드를 bash 함수로 대체하여 재사용하려고 합니다. 그래서 내 이전 코드는 다음과 같습니다.

#!/bin/bash
set aline=" dsfsdf | fsdfff | yuhfd "
set line_parsed=`echo $aline | tr '|' "\n"`
echo ${line_parsed[1]}

어느 출력 dsfsdf.

이제 문장을 함수에 넣으려고 하면 제대로 이해되지 않습니다.

#!/bin/bash
parseLine ()
{
set line_parsed=`$echo $1 | tr '|' "\n"`
echo ${line_parsed[1]}
}
set aline=" dsfsdf | fsdfff | yuhfd "
parseLine $aline

문법적 오류가 있나요?

답변1

문자열에서 배열을 만들려면 다음을 사용하세요.

IFS='|' read -r -a line_parsed <<< "$aline"

  • IFS='|'배시 설정내부 필드 구분 기호도착하다|
  • read표준 입력 파일 설명자에서 읽기
    • -r백슬래시는 이스케이프 문자로 작동하지 않습니다.
    • -a line_parsed라는 파일을 만듭니다.line_parsed
  • <<< "$aline"여기에 있는 문자열, s의 내용을 표준 입력 $aline으로 전달합니다.read

이제 배열이 생겼습니다. echo "${line_parsed[0]}"분할 문자열의 첫 번째 요소를 제공합니다.


이 모든 것이 하나의 기능으로 이루어집니다.

parseLine ()
{
  IFS='|' read -r -a line_parsed <<< "$1"
  echo "${line_parsed[0]}"
}

이제 다음과 같이 호출할 수 있습니다.

$ parseLine "dsfsdf | fsdfff | yuhfd "
dsfsdf

관련 정보