Como expandir uma variável no prompt do console/shell

Como expandir uma variável no prompt do console/shell

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 barestá o valor de $foo.

esta expansão readline:

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-enormalmente 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 evalque 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.

informação relacionada