如何在控制台/shell 提示字元下擴展變數

如何在控制台/shell 提示字元下擴展變數

我們如何擴展變量,即。名稱前面有一個“$”,其值內容在 bash readline 上?

答案1

既然你特別提到了 readline,我想你想要一些東西,這樣:

$ echo $foo

變成:

$ echo bar

bar的值在哪裡$foo

這個閱讀線擴展:

shell-expand-line (M-C-e)
像 shell 一樣展開該行。這將執行別名和歷史擴展以及所有 shell 單字擴展(請參閱外殼擴展)。

M-C-e通常是Esc Ctrl+eAlt++ Ctrle

然而,這也擴展了其他所有內容,例如命令替換、算術擴展等。

$ 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.

相關內容