linux 远程传参数,linux - 如果我要使用ssh远程执行其中一个脚本,如何将参数从一个脚本传递到另一个脚本时保留空白? - 堆栈内存溢出...

本文讲述了在通过SSH远程执行bash脚本时,如何在带有空格的环境变量中正确传递参数。作者分享了set-env-variables.sh脚本的问题及其解决方案,帮助读者理解如何在双引号中存储并保持空格或特殊字符的环境变量。
摘要由CSDN通过智能技术生成

我在将带有空格的参数从一个bash脚本传递到另一个将通过ssh远程运行的bash脚本时遇到麻烦。 我有一个脚本,create-node.sh看起来像这样:

# create-node.sh

#!/bin/bash

function set_node_env_variables {

docker-machine ssh remote-machine 'bash -s' < ./set-env-variables.sh \

$ENV_VARIABLE_ONE \ # "foo bar"

$ENV_VARIABLE_TWO \ # feefi

$ENV_VARIABLE_THREE \ # "fo fum"

$ENV_VARIABLE_FOUR # huffpuff

}

create-node.sh将参数传递给set-env-variables.sh,后者使用ssh远程运行,如下所示:

# set-env-variables.sh

#!/bin/bash

i=0

argv=()

for arg in "$@"; do

argv[$i]="$arg"

i=$((i + 1))

done

echo "export ENV_VARIABLE_ONE=${argv[0]}" >> /root/.profile #expected: "foo bar"; actual: foo

echo "export ENV_VARIABLE_TWO=${argv[1]}" >> /root/.profile #expected: feefi; actual: bar

echo "export ENV_VARIABLE_THREE=${argv[2]}" >> /root/.profile #expected: "fo fum"; actual: feefi

echo "export ENV_VARIABLE_FOUR=${argv[3]}" >> /root/.profile #expected: huffpuff; actual: fo

带空格或特殊字符的环境变量在双引号中存储,该机器将使用ssh执行set-env-variables.sh,否则我根本不使用双引号。

如果我正在使用ssh远程执行set-env-variables.sh,如何将参数从create-node.sh传递到set-env-variables.sh时如何保留空格?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值