我有一个包含野蛮文件描述符的变量:
FORMATS='*.mobi *.pdf *.txt *.epub *.lit'
如果我写
,它会使用适当的文件进行扩展echo $FORMATS
并保留其字符串值,如果我引用它
echo "$FORMATS"
现在,我需要将其作为一个字符串进行操作,我这样做。
SUBST=`echo "$FORMATS" | sed "s/$1//"`
问题在于``文件内部无论如何都要扩展。怎么预防这个?感谢。
答案 0 :(得分:3)
不,它没有扩大!
你可能正在做的是使用SUBST
没有引号(例如:echo $SUBST
),然后它会被扩展...使用"$SUBST"
。
答案 1 :(得分:1)
这可能对您有用:
cd /tmp/formats
touch a.mobi b.pdf c.txt e.epub f.lit
a='*.mobi *.pdf *.txt *.epub *.lit'
echo "$a"
*.mobi *.pdf *.txt *.epub *.lit
echo $a
a.mobi b.pdf c.txt e.epub f.lit
b=pdf
c=$(echo "${a/\*.$b}")
echo "$c"
*.mobi *.txt *.epub *.lit
echo $c
a.mobi c.txt e.epub f.lit
答案 2 :(得分:0)
没有看到更多的代码我只能猜测你可能想做这样的事情:
:这只是shell - 不需要其他工具
for FILE in *.mobi *.pdf *.txt *.epub *.lit ; do
case "$FILE" in
"*.mobi"|"*.pdf"|"*.txt"|"*.epub"|"*.lit")continue;;
*)echo "${FILE//$1/}";;
esac
done
大概你会把文件mv或cp改为新的文件名???