사용자의 입력을 받아 사용자가 특정 항목을 입력할 때까지 배열에 삽입하는 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작동하지 않습니다. 이는 원시 입력으로 처리됩니다.