Bash パラメータ拡張「代替」および「割り当て」

Bash パラメータ拡張「代替」および「割り当て」

対。${parameter:-word}パラメータ拡張の使用方法を学びます。${parameter:=word}

以下は関連文書です。:

${parameter:-word}引数が設定されていないか空の場合、単語の拡張が置き換えられます。

${parameter:=word}引数が設定されていないか空の場合、単語の拡張が引数に割り当てられます。次に、パラメータの値を置き換えます。

もちろん、主な違いは、各説明の最初の文、つまり代替対割り当てです。

substitutedしかし、実際には何かが時と時の間に何が起こるのかわかりませんassigned

最後に、いつ他のものを使用するのが適切ですか?

答え1

次の例を考えてみましょう。

#!/bin/bash

echo "${parameter:-a}"
echo "${parameter:-b}"
echo "${parameter:=c}"
echo "${parameter:=d}"

そしてスクリプト実行の例:

$ bash ex.sh
a
b
c
c

最初の項目echoparameter設定されていないaため交換済み。が印刷されますa

2番目の項目ではechoまだparameter設定されていないbため交換済み。が印刷されますb

3番目の項目ではechoまだparameter設定されていないparameterため分散価値を与えてc評価parameterしてください。が印刷されますc

第四のエコではparameter はい 置くc(前の文では)に設定されているため、対応する値が印刷されます。再印刷さcれます。

設定されていないか空の場合、${parameter:-word}計算結果はnullになりますが影響を与えないことがわかります。wordparameterparameter中に${parameter:=word}設定されます設定されていない場合はparameter空です。

関連情報