基本上,我正在尝试制作一个在某一时刻需要存储坐标的程序。该程序的一部分需要将一个字符串分成两个字符串,以便我能够分别对两个字符串执行数学运算,然后重新连接两个字符串。需要如何以伪代码更改字符串的示例:
Var1="10 17"
separate Var1 into Var2 and Var3
#using the command echo "$Var1,Var2,Var3" here would output 10 17,10,17
#preform math on Var2 and/or Var3 here
Var1="$Var2 $Var3"
部分问题是我不能这样做
Var2=${Var1::-2}
或删除第一个字符以删除第一个或最后两个数字的等效内容,因为这些数字有时可能大于 99 或小于 10。请注意,我希望两个数字之间的分隔符是空格。有人知道我该怎么做吗?
答案1
如果分隔符是单个空格,请使用前缀和后缀剥离。
before_the_first_space="${Var1%% *}"
after_the_first_space="${Var1# *}"
before_the_last_space="${Var1%* }"
after_the_last_space="${Var1##* }"
或者,利用分词关于不带引号的变量替换。这将每个空白序列视为分隔符并将结果放入数组中。set -f
禁用通配符扩展,set +f
将其重新打开。
set -f
parts=($Var1)
set +f
echo "${parts[0]}"
或者,使用read
内置将变量拆分为数组。read
从标准输入读取,因此使用这里的字符串将变量的内容作为输入传递。
read -r -a parts <<<"$Var1"
无引号替换方法和read
基于值拆分的方法IFS
。