사용자가 특정 항목을 입력할 때까지 사용자 입력을 배열로 읽어옵니다.

사용자가 특정 항목을 입력할 때까지 사용자 입력을 배열로 읽어옵니다.

사용자의 입력을 받아 사용자가 특정 항목을 입력할 때까지 배열에 삽입하는 bash를 만들어야 합니다. 예를 들어 스크립트를 실행하면 다음과 같습니다.

enter variables: 3 4 7 8 ok  

나는 이 배열을 얻습니다:array=( 3 4 7 8 )

또는:

enter variables: 15 9 0 24 36 8 1 ok

나는 이 배열을 얻습니다:array=( 15 9 0 24 36 8 1 )

어떻게 해야 하나요?

답변1

개행 문자를 기본 구분 기호로 사용합니다.

read -a array -p "enter variables: "

개행 문자와 다른 문자를 원하는 경우 예를 들면 다음과 같습니다 y.

read -a array -d y -p "enter variables: "

구분 기호로는 단일 문자만 사용할 수 있습니다 read.

편집하다:

구분 기호와 함께 사용하기 위한 솔루션 ok:

a=
delim="ok"
printf "enter variables: "
while [ "$a" != "${a%$delim}${delim}" ]; do
    read -n1         # read one character
    a="${a}${REPLY}" # append character
done
array=(${a%$delim})  # remove "ok" and convert to array
unset a delim        # cleanup
echo                 # add newline for following output

노트:이 버전은 또한 (마지막 공백 문자 없이) 양식의 입력을 허용하지만 또는 3 4 7 8ok같은 특수 문자를 사용한 Del줄 편집은 Backspace작동하지 않습니다. 이는 원시 입력으로 처리됩니다.

관련 정보