我想编写一个 bash 脚本来基本上自动执行此过程:
vi filename.sh
(使用vi打开“filename.sh”)
添加以下两行:
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
并保存这些更改
:wq!
基本上我想将这些添加到 jenkins 文件中以实现自动化
答案1
vi
根据定义,它是一个可视化编辑器。
在这种情况下,最好使用其他方法。
如果您只想附加这些行,请执行以下操作:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
如果文件尚不存在,这也将起作用。
如果您希望在开头添加这些行,您可以使用ed
面向行的编辑器:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
这指示ed
在第 1 行插入行;.
线上的单个点表示输入的结束,因此插入在此停止。最后,文件被写入 ( w
) 并且编辑会话退出 ( q
)。
如果您坚持使用,ed
即使该文件尚不存在(在这种情况下我将使用cat
上面的示例),您可以使用:
ed filename.sh <<'EOF'
i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w filename.sh
q
EOF
主要区别在于,您不需要使用i
插入命令传递行号,因为还没有行;然后将文件名传递给w
写入命令,即新文件。
sed
也可以使用,但对于此类任务,我发现ed
更容易使用(并阅读正在发生的事情)。
答案2
答案3
我也会按照@wurtel建议的方式来做,但如果出于某种原因你真的想这样做六,将以下内容添加到您的$HOME/.vimrc 文件:
function AddVars()
let line1 = "export GRADLE_HOME=/opt/gradle/gradle-5.2.1"
let line2 = "export PATH=${GRADLE_HOME}/bin:${PATH}"
call append(line('$'), line1)
call append(line('$'), line2)
write
exit
endf
然后打电话六使用 -c 选项,如下所示:
vi filename.sh -c "call AddVars()"