Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何将数字拆分为字符数组_Bash_Shell_Scripting - Fatal编程技术网

Bash 如何将数字拆分为字符数组

Bash 如何将数字拆分为字符数组,bash,shell,scripting,Bash,Shell,Scripting,我有点被什么东西卡住了。我有这样一个for循环: #!/bin/bash for i in {10..15} do 我想得到数字的最后一位,所以如果我是12,我想得到2。不过,我在语法方面有困难。我读到应该将其转换为字符数组,但当我执行以下操作时: j=${i[@]} echo $j 我没有得到10、11、12等等…我得到10、11、12……当我不知道有多少个数字将组成I(例如,它可能是1、10或100等)时,我如何将这些数字分开,以便得到最后一个I呢?诀窍是把$I当作字符串对待 for i

我有点被什么东西卡住了。我有这样一个for循环:

#!/bin/bash
for i in {10..15}
do
我想得到数字的最后一位,所以如果我是12,我想得到2。不过,我在语法方面有困难。我读到应该将其转换为字符数组,但当我执行以下操作时:

j=${i[@]}
echo $j

我没有得到10、11、12等等…我得到10、11、12……当我不知道有多少个数字将组成I(例如,它可能是1、10或100等)时,我如何将这些数字分开,以便得到最后一个I呢?

诀窍是把
$I
当作字符串对待

for i in {10..15}; do j="${i: -1}"; echo $j; done
当然,如果您不想:

for i in {10..15}; do echo "${i: -1}"; done

awk
命令可以解决您的问题:

awk'{print substr($0,length,1)}测试文件

我假设这些数字保存在一个文件
test\u文件中

如果要对循环使用

for i in `cat test_1`
do
echo $i |tail -c 2
done
我想,使用哪种方法的答案是最明智的

但是,您也可以使用它,它允许在Bash中对变量进行C风格的操作

for i in {10..15}
do
 (( j =  i % 10 )) # modulo 10 always gives the ones' digit
 echo $j
done

这看起来是不是太过分了?太过分了?我不明白。我只是想说可能有比这更简单的方法。:)此外,问题中没有任何内容表明数字存储在文本文件中。即使它们存储在文本文件中,您也可以使用shell内置程序来操作它们。由于
cat
是一个外部可执行文件,我觉得
for I in`cat test_1`
既不是解析文本文件的最佳方法,也不是推荐的方法。另外
cat test_文件{124; awk'{print substr($0,length,1)}
可以像
awk'{print substr($0,length,1)}测试文件一样被替换掉。
谢谢@Frank!这对所有数字都非常有效。