我正在从黑名单文件中读取字符串,其中包含应该被删除的文件和文件夹。对于简单的文件名,它可以正常工作,但是对于通配符则不行。
例如,如果我在shell中输入
所以我尝试使用
我该如何使其工作?
例如,如果我在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 )
我该如何使其工作?