変数をどのように拡張するのですか?名前の前に「$」があり、その値の内容は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
。