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

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

변수를 어떻게 확장합니까? 이름 앞에 "$"가 있고 그 값 내용은 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.

관련 정보