如果我在 shell 脚本中有一个号码,我如何访问该号码的一位数字?

如果我在 shell 脚本中有一个号码,我如何访问该号码的一位数字?

我希望能够在 shell 脚本中单独浏览和访问每个数字。我该怎么做?

答案1

您可以将数字视为字符串,因为从根本上来说它们就是这样的*:

$ number=42
$ echo "${number:1:1}"
2
$ echo "${number:0:1}"
4

* 除非你将变量声明为整数(例如在 Bash 中),在这种情况下它是转换为十进制数然后才能将其视为字符串。例如八进制数:

$ declare -i number=042
$ echo "${number:0:1}"
3
$ echo "${number:1:1}"
4

这些都不适用于十进制或浮点数,*nix shell 不直接支持这些数字。为此,您想调查一下bc

你也可以将字符串视为字符数组以许多不同的方式。

答案2

$ number=12345
$ echo $number, length ${#number}
12345, length 5
$ echo ${number:0:1}
1
$ echo ${number:0:2}
12
$ echo ${number:0:3}
123
$ echo ${number:0:4}
1234
$ echo ${number:0:5}
12345
$ echo ${number:1:4}
2345
$ echo ${number:2:3}
345
$ echo ${number:3:2}
45
$ echo ${number:4:1}
5    
$ echo ${number:1}
2345
$ echo ${number:2}
345
$ echo ${number:3}
45
$ echo ${number:4}
5
$ echo ${number: -1}
5
$ echo ${number: -2}
45
$ echo ${number: -3}
345
$ echo ${number: -4}
2345
$ echo ${number:0:-4}
1
$ echo ${number:0:-3}
12
$ echo ${number:0:-2}
123
$ echo ${number:0:-1}
1234

所有这些可能的组合${parameter:offset:length}可能会有点令人困惑......

相关内容