bash错误sed:-e表达式1,字符3:未知命令:`/'

bash错误sed:-e表达式1,字符3:未知命令:`/',bash,for-loop,sed,Bash,For Loop,Sed,我编写了这个脚本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

我编写了这个脚本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选项以合并此修改

你猜怎么着

错误在这里:

sed -i "21/9.0E7/$n" 
因为您在21岁之后没有提供任何sed命令

您是否忘记了sed命令中的s替换开关

可能是:

sed -i "s/9.0E7/$n/" 
或者可能是:

sed -i "21s/9.0E7/$n/" 
错误如下:

sed -i "21/9.0E7/$n" 
因为您在21岁之后没有提供任何sed命令

您是否忘记了sed命令中的s替换开关

可能是:

sed -i "s/9.0E7/$n/" 
或者可能是:

sed -i "21s/9.0E7/$n/" 
sed命令的语法是

[ address(es) ] command
21被解释为地址,即行号因此,被视为命令,因此出现错误

你想干什么?如果要在第21行中将9.0e7替换为$n,请使用

21s/9\.0E7/$n/
sed命令的语法是

[ address(es) ] command
21被解释为地址,即行号因此,被视为命令,因此出现错误

你想干什么?如果要在第21行中将9.0e7替换为$n,请使用

21s/9\.0E7/$n/

不,这不是错误,因为当我放置s时,我收到以下错误消息sed:-e表达式1,char 18:unterminated s'command`。21是我必须更改9.0e-7的行,我怀疑您现在的sed命令中可能有语法错误。不,这不是错误,因为当我放置s时,我收到以下错误消息sed:-e表达式1,char 18:unterminated s'command`。21行是我必须更改9.0e-7的地方,我怀疑您的sed命令现在可能有语法错误。看起来您正在尝试在循环中将文件IC_masslesplanetesimal.java中的第21行更改5次,先更改为9.0e-7,然后更改为9.0e-8,等等。虽然这毫无意义,但请告诉我们您在一些示例输入和预期输出中真正想要做什么。@Ed Morton这是bash的第一部分,所以每次更改文件时,我都编译、运行它、用程序读取它并获取输出。bash脚本是解释的,而不是编译的。问题是,尽管我们无法从你目前提供的描述中理解你想要做什么,发布示例输入和预期输出是帮助我们了解您想要完成的任务所需的最低要求。看起来lie yopu正在尝试将文件IC_masslesplanetesimal.java的第21行在循环中更改5次,先更改为9.0E-7,然后更改为9.0E-8,等等。虽然这毫无意义,但请告诉我们您在一些示例输入和预期输出中真正想要做什么。@Ed Morton这是bash的第一部分,所以每次更改文件时,我都编译、运行它、用程序读取它并获取输出。bash脚本是解释的,而不是编译的。问题是,尽管我们无法从您目前提供的描述中理解您正在尝试做什么,但发布示例输入和预期输出是帮助我们理解您想要完成的任务所需的最低要求。