我想通过crontab定期运行的机器A上的脚本A调用在机器B上运行脚本B。我自己不是Unix用户,在看了类似的问题之后,几件事让我感到困惑。
是否需要单引号,因为我看到它们有时被使用但有时未被使用。
ssh user@host './path/foo.sh'
ssh user@host foo.sh
如果我想使用变量,将可以正常工作:A.sh:
path="some/path"
ssh user@host @path/foo.sh
还是我需要将它们用单引号引起来?
答案 0 :(得分:1)
仅当字符串包含特殊字符(尤其是空格)时,才需要单引号。 shell会逐字解释单引号内的所有内容。
使用$
而不是@
扩展变量,但是您不能在单引号中使用它,因此最好使用双引号。那些仍然可以防止空格,但是允许$
扩展:
path="some/path"
ssh user@host "$path/foo.sh"
要ssh
到远程计算机,通常可以使用密码或密钥对。对于自动化而言,密钥对几乎是您唯一的选择,因为您不想将密码以纯文本格式存储在任何地方,并且ssh
使得无论如何都很难从文件中输入密码。