コンソール/シェルプロンプトで変数を拡張する方法

コンソール/シェルプロンプトで変数を拡張する方法

変数をどのように拡張するのですか?名前の前に「$」があり、その値の内容はbash readlineにありますか?

答え1

readlineについて具体的に言及したので、次のようなことをしたいとします。

$ echo $foo

になる:

$ echo bar

barの値はどこにありますか$foo

持つこの読み出しラインが拡張されます。:

shell-expand-line (M-C-e)
シェルのように線を広げます。これは、エイリアスと履歴の拡張だけでなく、すべてのシェルワードの拡張も行います(参照:シェル拡張)。

M-C-e一般的にEsc Ctrl+eまたはAlt++ 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

関連情報