저는 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 world
text
참고: 매개변수를 스크립트에 전달하는 옵션이 있다는 것을 알고 있지만 스크립트를 실행하는 사용자에게는 이 옵션이 더 직관적이므로 이를 수행하는 방법을 알고 싶습니다!
답변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
환경 교체- 쉘 형식 문자열의 환경 변수 바꾸기