콘솔/셸 프롬프트에서 변수를 확장하는 방법

콘솔/셸 프롬프트에서 변수를 확장하는 방법

변수를 어떻게 확장합니까? bash readline의 값 내용에 '$' 앞에 이름이 있습니까?

답변1

당신이 readline을 구체적으로 언급했기 때문에 다음과 같은 것을 원한다고 생각합니다.

$ echo $foo

다음과 같이 됩니다:

$ echo bar

bar의 값은 어디에 있습니까 $foo?

있다이 readline 확장:

shell-expand-line (M-C-e)
쉘처럼 행을 확장하십시오. 이는 별칭 및 내역 확장은 물론 모든 쉘 단어 확장도 수행합니다(참조:쉘 확장).

M-C-eEsc 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.

관련 정보