与えられた最初の引数を印刷する単純なbashスクリプトがあります。
#!/bin/bash
echo $1
このスクリプトを実行すると、./filename.sh $PATH
PATH変数のすべての内容が印刷されます。 「$PATH」文字列を表示したいです。
私はそれを試しましたが、echo "$1"
同じように動作します。
解決策はありますか?
答え1
いいえ。スクリプトを開始する前に変数がシェルによって拡張されるため、スクリプトは変数を表示できず、変数の内容のみを表示できるため、回避策はありません。
しかし、簡単な解決策があります。変数は一重引用符で拡張されないため、変数をその値の代わりに文字列として渡す場合は、その変数を引用します。
$ ./filename.sh '$PATH'
$PATH
ただし、スクリプト内の変数も参照する必要があります。
#!/bin/bash
echo "$1"
この特別なケースには違いはありませんが、良い練習そして良い習慣を育てなければならない。