변수를 어떻게 확장합니까? 이름 앞에 "$"가 있고 그 값 내용은 bash readline에 있습니까?
답변1
당신이 readline을 구체적으로 언급했으므로 다음과 같은 것을 원한다고 가정합니다.
$ echo $foo
이 되다:
$ echo bar
bar
의 값은 어디에 있습니까 $foo
?
가지다이 읽기 라인이 확장됩니다.:
shell-expand-line (M-C-e)
껍질처럼 선을 확장하십시오. 이는 별칭 및 내역 확장은 물론 모든 쉘 단어 확장도 수행합니다(참조:쉘 확장).
M-C-e
일반적으로 Esc Ctrl+ e또는 Alt++ Ctrl.e
그러나 이는 명령 대체, 산술 확장 등과 같은 다른 모든 것도 확장합니다. 그러므로:
$ echo $SHELL $(date) $((11+22))
이 되다:
$ echo /bin/zsh Wed 3 Nov 00:52:09 JST 2021 33
답변2
귀하의 질문을 올바르게 이해했는지 모르겠지만 인쇄 변수를 사용할 수 있습니다에코.
답변3
이 시도:
#!/bin/bash
DEFAULT_VALUE="default-value"
read -e -p $'\e[33mEnter variable name\e[0m: ' -i "$DEFAULT_VALUE" NEW_VAR
echo "New value for variable is: $NEW_VAR"
답변4
도중에 변수를 확장하는 방법을 모르지만 read
변수 이름에 대한 참조 없이 문자열이 저장된 경우 결과를 변경하지 않고 나중에 평가할 수 있습니다.
read -e variable
$SHELL
echo $valiable
$SHELL
eval echo $variable
/bin/bash
echo $variable | envsubst
/bin/bash
read -e n
hello
echo $n
hello
eval echo $n
hello
echo $n | envsubst
hello
eval
변수로 저장된 명령도 실행하므로 발생할 수 있는 위험에 유의하세요 . 안전상의 이유로 계속 사용하는 것이 좋습니다 envsubst
.