\n在shell脚本中不起作用
我是unix新手,尝试使用shell脚本“setup.sh”运行以下命令 但jobserver.conf未按预期更新并返回\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
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'
是两件不同的事情。你用了前者,但我想你想要后者。