String 在shell中拆分一个字符串,使所有字段都达到final'';(猛击)
我希望得到字符串1.2.3.4.5的1.2.3.4 我知道我可以用这个代码来得到最终的数字,但是我可以用什么来得到之前的所有数字呢。(包括“:”) 我试过使用IFSString 在shell中拆分一个字符串,使所有字段都达到final'';(猛击),string,bash,String,Bash,我希望得到字符串1.2.3.4.5的1.2.3.4 我知道我可以用这个代码来得到最终的数字,但是我可以用什么来得到之前的所有数字呢。(包括“:”) 我试过使用IFS $ IFS='.' read -ra STRING <<< "$foo" $ u_num="${STRING[0]}"'.'"${STRING[1]}"'.'"${STRING[2]}"'.'"${STRING[3]}" $ echo $u_num $ 1 2 3 4 # It should have return
$ IFS='.' read -ra STRING <<< "$foo"
$ u_num="${STRING[0]}"'.'"${STRING[1]}"'.'"${STRING[2]}"'.'"${STRING[3]}"
$ echo $u_num
$ 1 2 3 4
# It should have returned 1.2.3.4
$IFS='.'读取-ra字符串尝试使用:
echo ${foo%.*}
屈服:
foo="1.2.3.4.5"
echo ${foo%.*}
1.2.3.4
及
屈服
1 2 6
如果要将空格转换为
,可以使用tr
:
echo $foo | tr ' ' '.'
为foo=“1 2 6”
是的,这是在一个纯bashshell脚本中使用的。第二个示例的确切含义是什么?如果foo
是1.2.3.4.5
,那么您希望1.2.6
的结果是什么?正如您所看到的,1234都将进入一个数组,但我的变量u_num只需要前2个。我将编辑代码使其全部为四个。为什么要使用:
?很抱歉,这是一个错误,已更新。这还返回'1 2 3'@RussellHickey它在Debian下与bash一起工作。你确定你在使用bash吗?你的话是什么?@RussellHickey我不确定我是否理解你的评论。究竟是什么产生了13
?也许你在问题陈述中的第二个例子需要澄清。@RussellHickey你能用tr
?例如,echo$foo | tr'.
?@RussellHickeytr
是Bash的外部命令,而不是内置命令。通常,当我们只提到Bash(或纯Bash)时,我们忽略所有外部命令,只需要内置命令。键入help
以获得所有内置项和关键字的列表;您将看到tr
不在列表中。
1 2 6
echo $foo | tr ' ' '.'
1.2.6