我正在编写接收后 git 钩子(Hook)的第二个版本。
我有一个 GL_REPO
变量符合:
/project.name/vhost-type/versioncodename
它可能有也可能没有尾部和/或前面的斜线。
我当前的代码误解了以下代码的功能,因此它清楚地将 $versioncodename
复制到每个变量中:
# regex out project codename
PROJECT_NAME=${GL_REPO##*/}
echo "project codename is: $PROJECT_NAME"
# extract server target vhost-type -fix required
VHOST_TYPE=${GL_REPO##*/}
echo "server target is: $VHOST_TYPE"
# get server project - fix required
PROJECT_CODENAME=${GL_REPO##*/}
echo "server project is: $PROJECT_CODENAME"
从字符串后面一次取一个元素,或者保证三部分字符串分配这些变量的正确方法是什么?
我想拆分成一个数组可能会更好?
最佳答案
#!/bin/bash
GL_REPO=/project.name/vhost-type/versioncodename
GL_REPO=${GL_REPO#/} # remove preceding slash, if any
IFS=/ read -a arr <<< "$GL_REPO"
PROJECT_NAME="${arr[0]}"
VHOST_TYPE="${arr[1]}"
PROJECT_CODENAME="${arr[2]}"
更新:anishsane 的替代解决方案:
IFS=/ read PROJECT_NAME VHOST_TYPE PROJECT_CODENAME <<< "$GL_REPO"
关于bash - 如何在 Linux Bash/Shell 中将字符串拆分为组件部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205026/