Bashの変数とパス名の拡張順序について

Bashの変数とパス名の拡張順序について

Bashは、パス名(ワイルドカード)を拡張する前に変数を拡張します。逆方向に進むと仮定すると(つまり、変数を拡張する前にパス名を拡張した場合)、拡張順序に関係なく結果が同じになるように、変数拡張とパス拡張の両方を使用するbashスクリプトを作成できますか?

私は次の簡単なbashスクリプトを思いついた。

#!/bin/bash

# Create a variable called myvar1
myvar1=~
echo $myvar1

# Use both path expansion and variable expansion with the ls command
# Assuming the variable was expanded first, the out should be the same as if the path was expanded first. Is my assumption correct?
ls $myvar1/*.txt  

私のスクリプトが質問に満足して答えていることを確認できますか?

ベストアンサー1

ls $myvar1/*.txt 

*.txt$myvar1パス名が変数の前に展開されると、一致するファイル名がない可能性があるディレクトリから検索されます。その後、最初にパスを展開してから、ホームディレクトリで終わるファイル名を見つけるのとは異なり、ホームディレクトリパスに$myvar1展開します。/home/username/*.txt.txt

通常、ファイル名に$記号を含めることができるので、拡張順序は常に重要であると思います。 .*$PATH

一方、グローバル文字を含む変数は変数の値を制御できるため、簡単に解決できます。

おすすめ記事