shell - 如何将 shell 通配符传递给反引号命令

标签 shell wildcard backticks

我正在尝试在 shell 脚本中使用 find 来计算我匹配通配符模式的文件数量,然后在只有一个的情况下获取文件的名称。但是我无法将通配符模式传递给反引号扩展。

FINDCMD="find . -iname *DATA*.txt"
DATACOUNT=$($FINDCMD | wc -l)

if [ $DATACOUNT -eq 1 ]
then
  use-data $($FINDCMD)
else
  echo bugger
fi

这不起作用: shell 在调用 find 时扩展 DATA.txt。我希望通过星号来查找。

如果我做到了
FINDCMD="find . -iname '*DATA*.txt'"

然后 shell 不会扩展星号,但 find 获取单引号并且不匹配任何内容。

最佳答案

不要把你的命令放在一个变量中。直接执行命令有什么问题?

DATACOUNT=$(find . -iname "*DATA*.txt" | wc -l)
if [ $DATACOUNT -eq 1 ];then
    .....
fi

编辑:

如果您想重用该命令,请使用子程序
myfind(){
    find . -iname "*DATA*.txt" | wc -l
}

关于shell - 如何将 shell 通配符传递给反引号命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510828/

相关文章:

android - 如果路径包含空格,adb 命令将无法执行

linux - 解压目录中的所有文件

Java泛型通配符问题: List<?扩展了A>

perl - 为什么我的 Perl 反引号提示 "sh: line 1: any: command not found"?

bash - 创建带有校验和验证的文件下载脚本

perl:这里是反引号运算符内的文档

python - 如何转义 Python 字符串中的任何特殊 shell 字符?

linux - linux中如何使用软链接(soft link)目录快速移动到真实目录?

bash - 如何从 bash 中的字符串中删除后缀?

css - 在 CSS 选择器中使用通配符来设置值存在时的样式