我是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
命令,但似乎我需要在文件中编辑它,而不是直接在我的代码中编辑。
我可以使用什么命令来格式化字符串?我是否正确使用该功能?我能看到我的变量吗?你知道吗? 更好的方法来达到我的目标?
提前致谢!
答案 0 :(得分:1)
假设你只想用零填充数字,这可以在一个命令中完成:
$ printf '%04d\n' "${ADDR[@]}"
0333
4444
0333
0333
4444
0333
0333
此处数组中的每个数字都作为单独的参数传递给printf
- 它会为您处理格式化。
当然,这是否合适取决于您计划如何使用这些数字。
除此之外,return
仅用于指示例程是否成功。因此,它仅支持从0
到255
的值。要从函数或命令输出内容,请使用标准输出/错误。