4

如果它不存在,我正在尝试找到将后缀添加到字符串(在 bash 中)的最佳方法。

我首先想到了这个:

case "$R" in
    *.git ) ;;
    * ) R=$R.git ;;
esac

哪个有效。但是很麻烦。

然后想到了这个:

R=${R%.git}.git

这很好,紧凑而整洁。

还有其他选择吗?有什么我应该注意的问题吗?

4

1 回答 1

5
[[ $r == *.git ]] || r+=.git

将是我的首选方法。

shopt -s extglob
case $r in !(*.git)) r+=.git; esac

可能是更好的case方法。如果确定R已设置且不为空,则您的第二种方法可能已经足够好了。其他可能性包括:

${r:+'declare'} r="${r%.git}.git"
r=${r%.git}.git ${r:+'true'}

对于 POSIX sh,您的任何一种方式都可以,但您应该考虑不使用全大写的变量名。

于 2012-06-14T10:16:53.493 回答