変動インフレを防ぐ方法は?

変動インフレを防ぐ方法は?

与えられた最初の引数を印刷する単純なbashスクリプトがあります。

#!/bin/bash
echo $1

このスクリプトを実行すると、./filename.sh $PATHPATH変数のすべての内容が印刷されます。 「$PATH」文字列を表示したいです。

私はそれを試しましたが、echo "$1"同じように動作します。

解決策はありますか?

ベストアンサー1

いいえ。スクリプトを開始する前に変数がシェルによって拡張されるため、スクリプトは変数を表示できず、変数の内容のみを表示できるため、回避策はありません。

しかし、簡単な解決策があります。変数は一重引用符で拡張されないため、変数をその値の代わりに文字列として渡す場合は、その変数を引用します。

$ ./filename.sh '$PATH'
$PATH

ただし、スクリプト内の変数も参照する必要があります。

#!/bin/bash
echo "$1"

この特別なケースには違いはありませんが、良い練習そして良い習慣を育てなければならない

おすすめ記事