如何使用shell脚本在数组中格式化字符串?

时间:2016-11-11 10:38:31

标签: shell

我是shell脚本的初学者,我的代码遇到了一些麻烦。

我的目标是控制数组“mystring”中数字的大小和格式

#!/bin/bash
mystring="333,4444,333,333,4444,333,333"
expectedValue=4
addLeftZero () {
      if [ $myCount -eq $expectedValue ]
        then
            #the number has the correct size
         else
            #this is where I have to prepend "0" until the number has the expected lenght,
            #for example the number "333" will be "0333"
        fi
            #here i have to return the full array with the mods
    }
IFS=',' read -ra ADDR <<< "$mystring"
    for i in "${ADDR[@]}"; do
        myCount=${#i}
        addLeftZero $i
        return $i
    done
  

0333,4444,0333,0333,4444,0333,0333

我使用过sed命令,但似乎我需要在文件中编辑它,而不是直接在我的代码中编辑。

我可以使用什么命令来格式化字符串?我是否正确使用该功能?我能看到我的变量吗?你知道吗? 更好的方法来达到我的目标?

提前致谢!

1 个答案:

答案 0 :(得分:1)

假设你只想用零填充数字,这可以在一个命令中完成:

$ printf '%04d\n' "${ADDR[@]}"
0333
4444
0333
0333
4444
0333
0333

此处数组中的每个数字都作为单独的参数传递给printf - 它会为您处理格式化。

当然,这是否合适取决于您计划如何使用这些数字。

除此之外,return仅用于指示例程是否成功。因此,它仅支持从0255的值。要从函数或命令输出内容,请使用标准输出/错误。