我正在遍历*.info
目录中的所有文件,并检查是否存在相应*.gz
的文件(如果没有则删除该.info
文件)。但要做到这一点,我需要.info
去掉$file
. 我一直在摆弄参数替换,bash
但似乎没有任何效果。我可以很容易地获得扩展(就像下面的代码一样),但除了扩展之外,我不是所有的东西。我尝试了各种我认为可能有用的东西;没有。
for file in *.info; do
gz_file="${file:(-4)}" # wrong... what is right?
# gz_file=`echo "$file" | sed -e 's/.info//'` # easy alternative I'm trying to avoid
if [[ ! -f "${gz_file}" ]]; then
rm "${file}"
fi
done
我意识到这可以很容易地完成sed
,如注释掉的行中所示,但如果可能的话,我想使用 bash 内置的变量操作功能来完成它,因为我认为它会很方便弄清楚如何让它以这种方式工作。