【问题标题】:How to run a remote bash script with arguments from local如何使用来自本地的参数运行远程 bash 脚本
【发布时间】:2014-12-13 01:52:40
【问题描述】:

我是 shell 脚本的新手,遇到了一些麻烦。

我正在尝试从本地计算机执行远程脚本。本地机器上的脚本传递了四个参数,它执行以下行:

ssh $STACK 'bash -l -c "./deploy_intermediate.sh $2 $3 $4"'

但是,我无法获得 $2、$3 和 $4 来输出传递的参数。有什么方法可以在单引号内访问它们?执行上述行的最佳方法是什么。

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: linux bash shell scripting


    【解决方案1】:

    诀窍是:

    ssh -i ~/.ssh/"$GIT_PRIVKEY" user@"$IP" "bash -s" < localpath/script.sh "$arg1" "$arg2"
    

    【讨论】:

    【解决方案2】:

    要传递您必须编写的参数:

    ssh $STACK 'bash -l -c "./deploy_intermediate.sh '$2 $3 $4'"'
    

    因此,您为要扩展的 $i 值让路。但是,我认为您可能只需运行即可获得相同的结果:

    ssh $STACK "./deploy_intermediate.sh $2 $3 $4"
    

    【讨论】:

    • 但是,如果这些参数中的任何一个包含空格或 shell 元字符,就会产生令人惊讶的结果。
    • @rici 然后用双引号转义每个变量就足够了。比如:ssh ... "./command \"$1\" \"$2\" ...".
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2018-04-07
    相关资源
    最近更新 更多