我正在经历 Linux From Scratch 项目,我想在继续每个步骤之前验证每个程序和库是否已正确创建。
(我在这里和谷歌搜索,但我能找到的几乎所有内容都是关于回显在同一行中声明的 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*