변수를 어떻게 확장합니까? 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
.