检查" /"是否存在变量,如果没有找到则添加

时间:2014-04-10 02:31:13

标签: shell

在我的脚本中,我得到一个变量MYPATH作为输入。

要求是,验证MYPATH变量最后是否包含/的脚本,如果不是,则应添加一个:

如果MYPATH=/home/ubuntu
它应该改为:MYPATH=/home/ubunt/

此致

3 个答案:

答案 0 :(得分:2)

剥去最后一个/,如果存在,然后重新添加一个。

MYPATH=${MYPATH%/}/

这适用于任何符合POSIX标准的shell。不幸的是,没有简单的方法可以删除 POSIX shell中有多个尾部斜杠。您必须使用循环:

MYPATH=$MYPATH/
# Until removing and adding a single / is a no-op,
# keep stripping the trailing /
until [ "$MYPATH" = "${MYPATH%/}/" ]; do
    MYPATH=${MYPATH%/}
done

答案 1 :(得分:1)

我会使用参数扩展来执行此操作。从Bash手册页:

${parameter:offset}
   ${parameter:offset:length}
          Substring  Expansion.   Expands to up to length characters of parameter starting at the character specified by offset.  If length is omitted, expands
          to the substring of parameter starting at the character specified by offset.
${#parameter}
          Parameter length.  The length in characters of the value of parameter is substituted.

所以,你可以这样做:

if [ ${#MYPATH} -gt 0 -a "${MYPATH:${#MYPATH}-1}" != "/" ]; then MYPATH="$MYPATH/"; fi

我希望这会有所帮助。

答案 2 :(得分:0)

如果你可以使用bash,你可以删除任意数量的字符:

shopt -s extglob
echo "${MYPATH%%+(\/)}/"