我正在尝试通过SSH运行带字符串值的perl脚本,但我无法让它工作。
我的脚本如下所示:
ssh user @ linux /home/user/script.pl“value1 value2 value3”
脚本将执行但由于某种原因,传递给它的唯一值是value1而不是整个字符串值。它认为这是因为双引号在通过SSH传输时会被丢弃?
任何人都可以对此有所了解吗?干杯。
答案 0 :(得分:1)
问题是初始引号集是由用于调用命令的shell扩展的,所以实际发生的是:
ssh user@linux /home/user/script.pl "value1 value2 value3"
结束为:
/home/user/script.pl value1 value2 value3
从远程系统运行时。
您需要转义引号,以便在远程端进行解释之前不会在本地解析它。
要转义引号,您可以执行以下操作:
ssh user@linux /home/user/script.pl \"value1 value2 value3\"
答案 1 :(得分:-1)
通常更容易将更大的值(例如STDIN
)传递到远程脚本中。这样,它就不会受到命令行解析器或shell的攻击或破坏。