Como expandimos uma variável, ou seja. um nome precedido por '$', para seu conteúdo de valor no bash readline?
Responder1
Já que você mencionou especificamente o readline, acho que você quer algo para que isto:
$ echo $foo
torna-se:
$ echo bar
onde bar
está o valor de $foo
.
shell-expand-line (M-C-e)
Expanda a linha como o shell faz. Isto executa a expansão do alias e do histórico, bem como todas as expansões de palavras do shell (vejaExpansões de Shell).
M-C-e
normalmente seria Esc Ctrl+ eou Alt+ Ctrl+ e.
No entanto, isso também expande todo o resto, como substituições de comandos, expansão aritmética, etc.
$ echo $SHELL $(date) $((11+22))
torna-se:
$ echo /bin/zsh Wed 3 Nov 00:52:09 JST 2021 33
Responder2
Não sei se entendi bem sua pergunta mas você pode imprimir uma variável usandoeco.
Responder3
Experimente isto:
#!/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"
Responder4
Eu não conheceria nenhuma maneira de expandir uma variável durante read
, mas você pode avaliá-la posteriormente sem alterar o resultado se o sting armazenado não estiver se referindo a um nome de variável:
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
Esteja ciente dos perigos eval
que pode haver, pois ele também executa quaisquer comandos armazenados como variáveis. Por razões de segurança, sugiro fortemente que você siga o envsubst
.