LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1019|回复: 4

求助 : 有个关于脚本中变量的问题,麻烦大家帮下忙

[复制链接]
发表于 2007-4-13 14:50:18 | 显示全部楼层 |阅读模式
现在碰到一个问题
用C编写的一个程序make后 叫 diag , 可执行文件
还有一个参数表 叫 inf

即这样执行  ./diag inf >> results

然后从 results 里看结果

现在碰到一个麻烦, 就是我需要不断改变参数表里的参数取值, 比如 一个 叫 gp 的参数 , 要它从 0 变到 1000

因为每次都手工修改很麻烦, 我想编个小脚本能实现 自动修改 inf 文件 , 保存 , 并执行

实际写的时候发现, 在脚本里定义的变量, 是无法影响到 inf 文件里的值的, 这几天一直不知道该怎么做, 希望大家帮帮忙

以下是我写的小脚本


#!/bin/bash

declare -i a
declare -i b=0

for (( a=0; a<=1000; b=a+1))
   do
      vi -c ':1,$s/gp=$a/gp=$b' -c ':wq' inf     <==其中 "gp=?" 是 inf 文件中需要修改的地方
      a=b
      ./diag inf >> results
   done

我也试过用 export , 比如

declare ......

export a
export b

for ......

但发现没有用, 我知道肯定是不能直接用脚本里的变量影响打开文件里的, 但不知道到底该怎么办, 希望大家部吝赐教, 不胜感激
发表于 2007-4-13 17:21:03 | 显示全部楼层
楼主是不是在脚本区发过帖子问非交互模式调用 vi 的问题?当时我回复楼主建议使用 sed,不过楼主似乎没有注意。本帖中的问题我建议楼主去看看关于单引号和双引号的区别,另外,再次建议楼主去看看 sed 的介绍。最后还要建议楼主找一本 shell 方面的书读一读,像现在这样“跟着感觉走”的学习方法效率很低的
回复 支持 反对

使用道具 举报

发表于 2007-4-13 20:09:57 | 显示全部楼层
for 里面是新开一个 bash 进程运行的。

所以一个 for 内部是不可能影响循环体外部的变量的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-14 11:04:37 | 显示全部楼层
Post by DoDo
楼主是不是在脚本区发过帖子问非交互模式调用 vi 的问题?当时我回复楼主建议使用 sed,不过楼主似乎没有注意。本帖中的问题我建议楼主去看看关于单引号和双引号的区别,另外,再次建议楼主去看看 sed 的介绍。最后还要建议楼主找一本 shell 方面的书读一读,像现在这样“跟着感觉走”的学习方法效率很低的


看来要仔细看一看书了,呵呵
因为我是在linux下算东西,觉得没必要学那么多,现在看来确实有点投机心理了
谢谢哥们,我周一去图书馆借本书,好好学学sed
PS:单引号和双引号的区别我知道,单引号内完全处理成字符,而双引号内可以存在变量,对吧,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-14 11:08:03 | 显示全部楼层
Post by VirusCamp
for 里面是新开一个 bash 进程运行的。

所以一个 for 内部是不可能影响循环体外部的变量的。


哦,是这样,多谢你啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表