【发布时间】:2021-04-26 22:06:15
【问题描述】:
在阅读Bash Reference Manual 时,我遇到了以下示例:
select fname in *;
do
echo you picked $fname \($REPLY\)
break;
done
脚本的输出如下:
1) case1.sh
2) loop1.sh
3) loop2.sh
4) select1.sh
#? 3
you picked loop2.sh (3)
所有给出的选项都是我运行脚本的目录的文件 (select1.sh)。
我的问题是脚本如何知道我当前工作目录的内容?
我的猜测是 * 令牌对此负责。
【问题讨论】:
-
你的猜测是正确的。 shell 会自动扩展通配符。
-
试试
echo *,你会看到的。 -
在所有情况下都是相似的。
-
ls *,cat *,echo *在所有这些中,*扩展为所有文件名(默认情况下点文件除外)。 -
参见手册中的filename expansion。