【发布时间】:2018-01-20 05:28:18
【问题描述】:
我想修改远程机器上的现有变量。在本地机器上,我为此使用“sed”。但是如何在远程机器上实现呢?
comlink.sh: 包含应更改的变量的远程文件。
#!/bin/bash
test=1
new=2
ready=0
我如何在本地更改该变量:
sed 's/ready=.*/ready=1/' /home/pi/comlink.sh > tmp
mv tmp /home/pi/comlink.sh
我想要远程实现的方法:
sed 's/ready=.*/ready=1/' ssh pi@[myIP] /home/pi/comlink.sh > tmp
mv ssh pi@[myIP] tmp /home/pi/comlink.sh
但这不是正确的方式或语法。我想我可能需要一些帮助。谢谢!
【问题讨论】:
-
是否有理由这样做,而不是通过 SSH 命令传递您想要的值?所以,
ssh pi@"$yourIP" "env ready=1 /home/pi/comlink.sh",在修改你的脚本以接受它继承的任何值之后(即: "${ready:=0}"而不是ready=0) -
或
ready=$1在脚本中,ssh pi@yourHost "comlink.sh 1"阅读。 -
也就是说:最佳实践是将代码和数据分开,从而避免首先尝试将数据放入代码中(然后需要自动编辑该代码)。这使得使用适当的版本控制系统变得更容易(您可以复制代码而不会因数据更改而产生无意的差异),并且更容易创建和执行良好的安全策略(例如在数据为读写时将代码标记为只读) )。
-
如果你做了 sed -i 's/ready=.*/ready=1/' /home/pi/comlink.sh 你可以跳过创建临时文件并自动覆盖 comlink.sh 文件
标签: bash shell variables ssh sed