2016-08-24 2 views
1

私はbashスクリプトを読みやすくしたいと思っています。 これを行うには、名前を付けるための位置パラメータの参照を作成したいと思います。bashで位置パラメータの参照を作成する方法はありますか?

私は

declare -n time="\$1" 

を試みたが、それは動作しませんでした。

declare: $1: syntax error: operand expected (error token is "$1") 

解決方法や提案をお持ちの方は、私にお知らせください。

答えて

3

Namerefsを使用すると、間接的に変数を簡単に変更できます。ただし、位置パラメータは基本的に読み取り専用です。直接割り当てることはできません。 (setを使用すると、位置パラメータを個別に更新するのではなく、全体として更新することができます)。

位置パラメータの名前を変更したい場合は、通常のパラメータ割り当てを使用します。

time=$1 

(正式には、シェルのパラメータ3つの異なる種類があります。

  1. 位置パラメータ:$1$2など
  2. 特別パラメータ:$?$*など(単一文字は、
  3. 変数:名前の有効な識別子を持つ「通常の」パラメータ

declare -nは、変数への参照のみを作成するために使用されます。 )

+0

ありがとう、chepner。もう1つ質問してみましょう。私は、time = "$ 1"のような位置パラメータを引用するべきかどうかは疑問です。 – mora

+1

害はありませんが、パラメータがそれ自身でRHS上にある場合は、必要ありません。代入にパラメータ拡張を引用する2つの大きな理由(ワード分割とパス名の拡張を防ぐため)はありません。 – chepner

+2

IMOでは、シェル内の変数参照を二重引用符で囲むという習慣を得るのが一番です。この場合(そして他のいくつかの場合)は必要ではありませんが、安全であるときとそうでないときを理解して追跡することは、あなたが思うよりも難しいです...だから私は先に進み、二重引用符それ。 –

関連する問題