0

因此,我试图了解 Bash 中两个结果之间的区别,以进一步了解位置参数:

$ find ./*.md
one.md
two.md
three.md
four.md

和:

$ ./findall.sh ./*.md
one.md

哪里findall.sh是:

#!/usr/bin/env bash
find $1 

在我的理解中,这两个应该操作应该是相同的,但是使用位置参数似乎只返回一项。我没有得到什么?

4

1 回答 1

1

在这两种情况下,您的交互式 bash./*.md在调用find. 因此,您的第一个命令扩展为:

find ./one.md ./two.md ./three.md ./four.md

在第二种情况下,您的命令扩展为:

./findall.sh ./one.md ./two.md ./three.md ./four.md

然后脚本运行,并将脚本中的命令扩展为:

find ./one.md

也许您的意思是引用通配符:

find './*.md'
./findall.sh './*.md'

但在任何一种情况下,find都会失败,因为find(在任何以 开头的参数之前-)的第一个参数是要搜索的目录的名称。没有名称为 的目录./*.md,因为/不能出现在文件或目录名称中。

*.md也许您的意思是,在当前目录下的任何位置查找名称匹配的所有文件:

find . -name '*.md'

也许您的意思是,在当前目录(但不是子目录)中查找名称匹配的所有文件*.md

find . -maxdepth 1 -name '*.md'
于 2016-01-26T21:30:27.857 回答