我們如何擴展變量,即。名稱前面有一個“$”,其值內容在 bash readline 上?
答案1
既然你特別提到了 readline,我想你想要一些東西,這樣:
$ echo $foo
變成:
$ echo bar
bar
的值在哪裡$foo
。
有這個閱讀線擴展:
shell-expand-line (M-C-e)
像 shell 一樣展開該行。這將執行別名和歷史擴展以及所有 shell 單字擴展(請參閱外殼擴展)。
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
.