每次调用脚本时,我都需要创建一个计数器以在 shell (bash) 脚本中使用 包含的数字必须加一,数字应保持为六位数字,因此初始值为 000000,然后是 000001,然后是 000002 等等...... 我正在做的是,我创建了一个名为“counter”的文件,其中在第一行包含一个 6 位整数。 所以从脚本我有这个代码:
index= cat /path/counter | tail -1 #get the counter
tmp=`expr $index + 1` #clone and increase the counter
echo "" >/path/counter #empty the counter
echo ${tmp} >/path/counter #insert clone
问题是它在第二步不起作用,可能是实际上失败的第一步,您有什么建议吗?
一个选项如下:
#!/bin/bash
read index < /path/counter
declare -i tmp=index+1
printf "%06d" $tmp > /path/counter
问题是它只会将文件的内容提升到 000007,之后我得到:
-bash: 000008: value too great for base (error token is "000008")
有什么建议吗?
最佳答案
您没有正确阅读索引。尝试:
index=$(tail -1 /path/counter)
其他注意事项:
- 你不需要
cat
,tail
可以自己处理 - 您可以将反引号替换为
tmp=$(expr ...)
- 您不需要
echo ""
,>
重定向会截断文件
编辑
要使数字为 6 位宽,请尝试使用 printf
而不是 echo
:
printf "%06d", $index
关于linux - 为 shell 脚本创建一个计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317384/