![查找选项作为命令行参数](https://linux22.com/image/170185/%E6%9F%A5%E6%89%BE%E9%80%89%E9%A1%B9%E4%BD%9C%E4%B8%BA%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.png)
我的脚本有问题。我正在尝试编写一个脚本,其中命令 find 的选项是第一个命令行参数。
在我的脚本中我有类似的东西
find_option=$1
find $find_option
问题是,例如对于查找选项,*.txt
输出只是我的目录中的第一个文本文件,但我想找到所有此类文件。
谢谢
答案1
假设你给你的脚本提供这样的模式,
./myscript '*.txt'
(引号是必要的,以避免将模式扩展到当前目录中的名称),那么您可以像这样编写脚本:
#!/bin/sh
name_pattern=$1
find . -name "$name_pattern"
这采用第一个命令行参数并在对 的调用中使用它find
,按给定模式过滤在当前目录及以下目录中找到的名称。
请注意,这里您也需要$name_pattern
在调用中引用变量扩展find
,其原因与调用脚本时需要在命令行上引用它的原因相同,即避免将模式扩展为当前目录中的名称。