Shellscript: return multiple values for cut function
本问题已经有最佳答案,请猛点这里访问。
我正在使用cut函数获取所有子字符串。例如:我有一个名为"v1.2.3"的字符串。我想给少校分配一个。2到次要和3到错误(删除第一个字符始终为V)
例如如下:
1 2 3 4 | major=$(echo $tag | cut -d'.' -f1) minor=$(echo $tag | cut -d'.' -f2) bug=$(echo $tag | cut -d'.' -f3) echo"$major $minor $bug" |
此脚本扩展为3行。我的问题是:如何在一次调用中返回所有的
我还尝试使用正则表达式。例如:
1 2 3 4 5 | re="^v(.*).(.*).(.*)$" [[ $tag =~ $re ]] && major="${BASH_REMATCH[1]}" && minor="${BASH_REMATCH[2]}" && patch="${BASH_REMATCH[3]}" echo $major echo $minor echo $patch |
号
谢谢。
这可以在纯
1 2 3 4 5 | $ IFS="." read -r major minor bug <<<"v1.2.3" # read the strings to variables $ major="${major/v/}" # removing the character 'v' from major $ printf"%s %s %s ""$major""$minor""$bug" # printing the individual variables 1 2 3 |
我最近学会了"阅读"。有点像这样:
1 2 3 4 5 6 7 | #set field separator to match your delimiter ifsOld=$IFS IFS='.' read major minor bug <<<$(echo $tag | cut -d'.' -f 1,2,3) IFS=$ifsOld |
如:
1 2 3 4 5 | $ IFS='.' $ read major minor bug <<<$(echo 127.1.2.123 | cut -d'.' -f 1,2,3) $ echo $major $minor $bug 127 1 2 $ |
号