1. ホーム
  2. バッシュ

[解決済み】bashで変数をデフォルト値で読み込む

2022-04-17 01:42:51

質問

bashスクリプトでターミナルから値を読み取る必要があります。 ユーザーが変更できるデフォルト値を提供できるようにしたいのですが。

# Please enter your name: Ricardo^

このスクリプトでは、プロンプトは "あなたの名前を入力してください: "デフォルト値は "Ricardo" で、カーソルはデフォルト値の後にあるはずです。 bashスクリプトでこれを行う方法はありますか?

どのように解決するのですか?

を使用することができます。 パラメータ展開 は、例えば

read -p "Enter your name [Richard]: " name
name=${name:-Richard}
echo $name

プロンプトにデフォルト値を括弧で囲むのは、かなり一般的な慣例です。

は何をするのですか? :-Richard の部分はどうなっているのでしょうか?bashのマニュアルより。

${parameter:-word} パラメータが未設定またはNullの場合、wordの展開が代入されます。それ以外の場合は、パラメータの値が代入されます。

また、注目すべきは...

以下の各ケースで、wordはチルダ展開、パラメータ展開、コマンド置換、算術展開の対象となる。

ですから、もしあなたが webpath=${webpath:-~/httpdocs} という結果が得られます。 /home/user/expanded/path/httpdocs ではなく ~/httpdocs など。