改为这样:
function mycommand { ssh user@123.456.789.0 "cd testdir;./test.sh "$1""}您仍然必须将整个命令作为单个字符串传递,但是在该单个字符串中,您需要先进行
$1扩展,然后再将其发送到ssh,因此您需要使用
""它。
更新资料
实际上,执行此操作的另一种正确方法是使用
printf%q正确引用该参数的方法。即使参数中包含空格,单引号,双引号或任何其他可能对shell具特殊含义的字符,这也将使参数的解析变得安全:
function mycommand { printf -v __ %q "$1" ssh user@123.456.789.0 "cd testdir;./test.sh $__"}- 当使用声明函数时
function
,()
没有必要。 - 不要仅仅因为您是POSIXist就对此发表评论。



