如果不存在则添加后缀(bash)

时间:2012-06-14 08:39:30

标签: bash variables

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

我首先提出了这个问题:

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

哪个有效。但是很麻烦。

然后想了想:

R=${R%.git}.git

这很好,紧凑,整洁。

还有其他选择吗?我应该注意哪些问题?

1 个答案:

答案 0 :(得分:2)

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

将是我首选的方法。

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

可能是更好的特定于bash的case方法。

如果您可以保证R已设置且不为空,那么您的第二种方法可能已经足够了。

${r:+declare r=${r%.git}.git}

将是一个有趣的解决方法。对于POSIX sh,你可以选择其中任何一种方法,但你应该考虑不使用全大写变量名。