引用符内にある場合、Bash 変数は変更されます。

引用符内にある場合、Bash 変数は変更されます。

パターンに一致する最初のファイルを取得してステートメントで使用しようとしています。にあるのと同じステップを使用しなさい。ワイルドカード拡張で最初の一致を取得するには?私は以下を書きました:

#!/bin/bash
files=("*.sql")
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"

これを実行すると、出力は次のようになります。

SQLファイル.sql

最初のファイルは* .sqlです。

$firstfile状況によって値が変わるのはなぜですか?

答え1

最後の行は$ firstfileの実際の内容を印刷します。

最初のエコーは二重引用符を使用しなかったため、ファイルシステムを介して$ firstfileを拡張します。

答え2

ファイル行から引用符を削除すると、次の結果が残ります。

#!/bin/bash
files=(*.sql)
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"

関連情報