2017-04-06 125 views
-1
for file in `ls |grep '\..$'` 
do 
num=0 
while [ $num -lt 100 ] 
num=`expr $num + 1` 
sed -i "_bak" "s/\/\/.*version.*/\/\/calcmarks, version $num ,released `date "+%a %b %d %H:%M:%S %Z %Y"`/" "$file" 
done 

我想是每个运行此脚本中,变量加1 例如,原来的纺织是变量加1,每次运行脚本

// calcmarks时间让变量,版本1,发布星期四4月6 20点50分54秒AWST 2017年

我运行该脚本后,我希望它成为

// calcmarks,第2版,发布XXXXXXXXXXXXX

然后

// calcmarks,第3版,发布XXXXXXXXXXXXXX

所以我设置一个变量$ NUM

+0

而问题是什么? –

+1

'用于$(ls | grep'.c $')中的文件' - 这太疯狂了! '用于* .c文件; do ...' – Jens

+0

将'num = 0'放在循环之前而不是在它之前是不是一个好主意? – Jens

回答

1

我不太看,这个问题是如何与您发布的代码(在一个循环内增加一个变量),但是当你想在脚本调用之间存储一个状态(这里是:版本号)时,你需要将该值存储在一个文件中。

创建一个文件$HOME/version,并存储在文件中的版本号。在每次调用时,读取文件的内容,增加变量并将其写回文件。

虽然这是微不足道的,还有一个棘手的方面包含:如果您并行运行脚本的两个实例,您有更新的版本号中的竞争条件。为了安全起见,你应该考虑文件锁定。