ls가 이 선언된 한 줄 변수를 인식하지 못하는 이유는 무엇입니까?

ls가 이 선언된 한 줄 변수를 인식하지 못하는 이유는 무엇입니까?

저는 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*

관련 정보