Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
\n在shell脚本中不起作用_Shell_Unix - Fatal编程技术网

\n在shell脚本中不起作用

\n在shell脚本中不起作用,shell,unix,Shell,Unix,我是unix新手,尝试使用shell脚本“setup.sh”运行以下命令 但jobserver.conf未按预期更新并返回 include file("/hb/data/spark/job-server/jobserver.conf") spark.context-settings.memory-per-node = ${SPARK_EXECUTOR_MEMORY} spark {n jobserver {n job-bin-paths {n advisor-scala="/o

我是unix新手,尝试使用shell脚本“setup.sh”运行以下命令

但jobserver.conf未按预期更新并返回

include file("/hb/data/spark/job-server/jobserver.conf")
spark.context-settings.memory-per-node = ${SPARK_EXECUTOR_MEMORY}
spark {n  jobserver {n    job-bin-paths {n      advisor-scala="/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar"n    }n  }n}
因为在更新jobserver.conf时,新行字符不起作用,而n仍然存在

当我试图运行

if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
    sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi
只有在终端中,它才能正常工作,但当我通过shell脚本执行相同操作时,它就不能正常工作了

    #!bin/sh


    # Update jobserver config 
    if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
            sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi
这是我的shell脚本

    #!bin/sh


    # Update jobserver config 
    if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
            sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi
我做错什么了吗 谁能帮帮我吗!垃圾箱/垃圾箱

sed-i'$a spark{\n jobserver{\n job bin path{\n text here}\n}\n}''test.txt


这是一个以换行符“\n”给出输出的示例脚本。

sed适合解析单行。这是。您真正想做什么?(即更新配置)。要匹配多行,您需要使用
n
命令将多行追加到sed中的模式空间。
“\n“
'\n'
是两件不同的事情。你用了前者,但我想你想要后者。