linux - 为 shell 脚本创建一个计数器

标签 linux bash shell

每次调用脚本时,我都需要创建一个计数器以在 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)

其他注意事项:

  • 你不需要cattail可以自己处理
  • 您可以将反引号替换为 tmp=$(expr ...)
  • 您不需要 echo ""> 重定向会截断文件

编辑

要使数字为 6 位宽,请尝试使用 printf 而不是 echo:

printf "%06d", $index

关于linux - 为 shell 脚本创建一个计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317384/

相关文章:

linux - 如何通过 Linux 终端滚动?

linux - 从文件 shell 脚本中获取子字符串

linux - 在当前目录运行 expect 脚本

linux - 如何撤消删除我的 .git/文件夹?

c++ - MinGW DLL 项目与 Linux 的兼容性

python - 如何使用 sed -n 但在 Python 中从文本文件中提取一系列行?

linux - 不确定 flock 是如何工作的。需要澄清一下

Git 相当于 which/where

linux - Shell 脚本 - 查找今天修改的文件,创建目录并将它们移动到那里

linux - 如何使用grep/awk对多行进行聚合平均?