小编use*_*128的帖子

在字符串变量中展开通配符

我正在从黑名单文件中读取字符串,其中包含应删除的文件和文件夹.它适用于简单文件名,但不适用于通配符.

例如,如果我在shell上键入,rm -rf !(abc|def)它将删除除这两个文件之外的所有文件.将此字符串!(abc|def)放入黑名单时,它不起作用,因为字符串不会被评估.

所以我尝试使用eval,但它没有按预期工作.

#!/bin/bash
# test pattern (normally read from blacklist file)
LINE="!(abc|def)"

# output string
echo "$LINE"

# try to expand this wildcards
eval "ls $LINE"

# try with subshell
( ls $LINE )
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这个工作?

bash wildcard expansion

3
推荐指数
1
解决办法
1451
查看次数

标签 统计

bash ×1

expansion ×1

wildcard ×1