lsがこの宣言された1行変数を認識しないのはなぜですか?

lsがこの宣言された1行変数を認識しないのはなぜですか?

私はLinux From Scratchプロジェクトを進めるつもりで、各ステップに進む前に各プログラムとライブラリが正しく作成されていることを確認したいと思います。

(ここでGoogleで検索しましたが、私が見つけることができるほとんどすべては、同じ行で宣言されたvarをエコーし​​たり、varの出力をls変数にダンプすることです。どちらも私の場合は適用されません)

別のモードを使用して、次のようなコマンドを複数回入力します。

ls -ld /tools/lib/mypattern* /tools/bin/mypattern*

たとえば、

ls -ld /tools/lib/tcl* /tools/bin/tcl*

同じパターンが再利用されるので、次のように単純化したいと思います。

glob=mypattern* ls -ld /tools/lib/$glob /tools/bin/$glob

しかし、私が実行した場合:

glob=tcl* ls -ld /tools/lib/$glob /tools/bin/$glob

それから私が得るものは次のとおりです。

drwxr-xr-x  2 lfs lfs 4096 Dec  2 03:02 /tools/bin/
drwxr-xr-x 16 lfs lfs 4096 Dec  2 03:02 /tools/lib/

変数が正しく選択されていないことは明らかです。

両方の場所で手動で入力したパターンを使用して実行すると、ls正しい出力が得られます。

$ ls -ld /tools/lib/tcl* /tools/bin/tcl*
lrwxrwxrwx 1 lfs lfs     8 Dec  2 02:39 /tools/bin/tclsh -> tclsh8.6
-rwxr-xr-x 1 lfs lfs 20512 Dec  2 02:38 /tools/bin/tclsh8.6
drwxr-xr-x 5 lfs lfs  4096 Dec  2 02:38 /tools/lib/tcl8
drwxr-xr-x 6 lfs lfs  4096 Dec  2 02:38 /tools/lib/tcl8.6
-rw-r--r-- 1 lfs lfs  7660 Dec  2 02:38 /tools/lib/tclConfig.sh
-rw-r--r-- 1 lfs lfs   773 Dec  2 02:38 /tools/lib/tclooConfig.sh

実行するたびに一度だけパターンを入力するようにこのコマンドを短縮するにはどうすればよいですか?

ベストアンサー1

拡張は変数割り当ての前に実行され、コマンドの実行は変数割り当て後に実行されます。使用支柱の拡張代わりに

ls -ld /tools/{lib,bin}/tcl*

おすすめ記事