抓取远程Shell脚本后,如何让其获取本地执行时传入的参数?
解决远程脚本无法接收本地参数的问题
问题核心是当前的管道调用没有把本地脚本的参数传递给远程执行的bash进程,导致远程脚本的$1无法获取到值。可以通过以下方式修改local.sh来实现参数传递:
方法一:通过bash -s传递所有参数
修改本地脚本local.sh的内容为:
#!/usr/bin/bash curl -sS https://remote_host/remote.sh | bash -s "$@"
说明
bash -s让bash从标准输入(即curl拉取的远程脚本内容)读取并执行脚本,同时将后续参数作为位置参数传递给该脚本。"$@"会完整保留本地脚本接收到的所有参数(包括带空格、特殊字符的参数),确保每个参数的完整性和正确性。
执行修改后的脚本:
./local.sh "some input here."
远程脚本会正确输出:
input var is : some input here.
方法二:传递单个参数(简单场景)
如果仅需传递单个参数,也可以直接指定$1:
#!/usr/bin/bash curl -sS https://remote_host/remote.sh | bash -s "$1"
但这种方式仅适用于单参数场景,多参数传递优先使用"$@"。
内容的提问来源于stack exchange,提问作者jimzcc
相关产品推荐
相关产品推荐

