>

쉼표로 구분 된 값과 같은 변수가 있고 반복해야하며 아래 코드를 사용하고 있습니다.

Var=test_v1,"Log Processor",test_v2
for i in ${Var//,/ }
do
    echo "Variables are  "${i}" assined"
done

출력 :

Variables are test_v1 assined
Variables are Log assined
Variables are Processor assined

큰 따옴표가있는 전체 단어를 단일 인용으로 사용하지 않고 Log와 Processor가 다르지만 단일 값과 같이 출력합니다.


  • 답변 # 1

    (더 나은) 사용 read -a 배열로 읽으려면 :

    #!/usr/bin/env bash
    #              ^^^^ arrays are a bash feature, not guaranteed in /bin/sh
    Var=test_v1,"Log Processor",test_v2
    IFS=, read -a Array <<<"$Var"          # this updates IFS only for the duration of 'read'
    for i in "${Array[@]}"; do             # now loop over elements in the array read created
        echo "Variables are ${i} assined"
    done
    
    

    또는 (나쁜) 변화 IFS 필드를 나누고 글 로빙을 비활성화하는 데 사용하려는 문자 만 포함 시키려면 따옴표없는 확장을 안전하게 사용할 수 있습니다.

    Var=test_v1,"Log Processor",test_v2
    IFS=,              # set the comma as the only field separator
    set -f             # disable globbing
    for i in $Var; do  # perform an unquoted expansion to split on IFS
        echo "Variables are ${i} assined"
    done
    # WARNING: This code left globbing disabled and ',' as the only field separator!
    
    
    <시간>

    때문에 ${Var//,/ } 쉼표를 공백으로 변경하면 결과적으로 모든 공백과 쉼표를 구분할 수 없으므로 둘 다로 나눕니다. 그렇게하지 마십시오. 대신 배열을 읽고 내용을 반복하십시오.

  • 이전 scala - RDD [String]의 출력이 필요한 기존 RDD에서 특정 데이터를 선택하여 RDD를 작성하는 방법은 무엇입니까?
  • 다음 java - 이미지를 바이트의 2D 배열로 변환 한 다음 동일한 배열을 사용하여 이미지로 다시 변환하는 방법은 무엇입니까?