쉘 스크립트의 읽기 명령 - 변수 입력 대체

쉘 스크립트의 읽기 명령 - 변수 입력 대체

저는 Linux를 처음 사용하므로 여기에 사용된 잘못된 용어를 양해해 주시기 바랍니다.

우분투 18.04를 사용하고 있습니다. 쉘 스크립트에서 텍스트를 읽는 명령을 사용하고 있습니다 read. 해당 읽기 명령에서 바꾸려는 bash 창에 변수가 있습니다. 내 쉘 스크립트는 다음과 같습니다.

echo "Enter Text"
read text
echo "Text is $text"

그런 다음 터미널에서 다음과 같이 실행합니다.

user@machine:~$ var="hello world"
user@machine:~$ ./script.sh
Enter text
$var
Text is $var
user@machine:~$ 

출력에서 다음 줄을 확인하세요. Text is $var.. 변수 값을 읽어 변수 이름에 var저장하려면 어떻게 해야 합니까 ?hello worldtext

참고: 매개변수를 스크립트에 전달하는 옵션이 있다는 것을 알고 있지만 스크립트를 실행하는 사용자에게는 이 옵션이 더 직관적이므로 이를 수행하는 방법을 알고 싶습니다!

답변1

이것은 ... 불리운다간접적인, 구문은 ${!reference}변수 이름의 변수 값을 바꾸는 것 입니다 reference. 예를 들어:

name='Jane Doe'
reference='name'
$ echo "${!reference}"
Jane Doe

답변2

먼저 변수를 내보내야 합니다.

export var=test

그런 다음 envsubst대체 텍스트 내부에 변수를 사용합니다.

echo "Enter Text"
read text
printf 'Text is %s\n' "$text" | envsubst

환경 교체- 쉘 형식 문자열의 환경 변수 바꾸기

관련 정보