Linux

使用參數遠端、互動地執行本地 bash 腳本

  • December 9, 2019

從我的所有測試來看,似乎不可能在允許互動式 shell 和傳遞參數的同時遠端執行本地腳本。

互動式*(參數嘗試在雙引號內或雙引號外作為單獨的命令執行)*

ssh -t server "$(<${scriptname})"

參數*(非互動式 ofc)*

cat $scriptname | ssh -t server bash -s - "${args[@]}"

我真的嘗試過各種方式。是否可以在發送參數的同時啟動互動式 shell 並執行腳本?

我相信通過考慮將遠端上的 $@ 參數的值更改為本地傳遞的值來回答我自己的問題,並且它似乎在我的測試中有效。

這是我關於切換的最終解決方案 $ 1 and $ 2

本地腳本

#!/bin/bash

echo "I wanna read you $1 and $2"
read yn

if [ "$yn" == "y" ]; then
   echo "I read you"
else
   echo "I could not read you"
fi

命令

ssh -t $server "set -- "${@:1:2}"; $(<${script})"

結果 (當發送 test1 和 test2 作為參數時)

I wanna read you test1 and test2

y

I read you!

希望這可以幫助任何未來的訪客

引用自:https://serverfault.com/questions/896417