【发布时间】:2013-07-07 08:28:43
【问题描述】:
我已经编写了这个脚本 bash,它必须编写一个具有不同特定行的文件 数字(即:“9.0E-8”...)所以我必须在 for 循环之后拥有最后一个文件 “9.0E-11”尊重“9.0E-7”。
#!/bin/sh
touch IC_masslessPlanetesimal.java
for n in "9.0E-8" "9.0E-8" "9.0E-9" "9.0E-10" "9.0E-11"
do
sed -i "21s/9\.0E-7/$n/" IC_masslessPlanetesimal.java
javac IC_masslessPlanetesimal.java
java IC_masslessPlanetesimal
done
现在脚本必须重新编辑、编译和运行 file.java 并且代码运行没有错误。 现在的问题是: 当我在第 21 行查看 file.java 时(有 scrpt 必须更改的数字),scrpt 仅编辑第一个 for 循环,因为当它尝试再次替换其他字符串时(“9.0E -9" 等...) 脚本找不到最后一个!
第一步)9e-7 -> 9e-8:脚本查找 9e-7 并替换为 n=9e-8 第二步)9e-8 -> 9e-9:脚本没有找到 9e-8 字符串并且无法更改它!!!
所以我必须重写 for 选项以合并此修改。
请猜一猜? :(
【问题讨论】:
-
看起来你正在尝试在循环中将文件 IC_masslessPlanetesimal.java 中的第 21 行更改 5 次,首先更改为 9.0E-7,然后更改为 9.0E-8,等等。这绝对是没有意义,所以请告诉我们您真正想要做什么以及一些示例输入和预期输出。
-
@ Ed Morton 这是 bash 的第一部分,所以每次我更改文件时,我都会编译、运行它,通过程序读取它并获取输出。
-
bash 脚本被解释,而不是编译。关键是,虽然我们无法从您迄今为止提供的描述中理解您正在尝试做什么,但发布示例输入和预期输出是帮助我们了解您想要完成的任务的最低要求。跨度>