如何通过 ssh 传递多个参数并在 ssh 脚本中使用这些参数?

如何通过 ssh 传递多个参数并在 ssh 脚本中使用这些参数?

我正在尝试执行脚本文件脚本文件在远程机器上用户@remote-01使用SSH。我还需要在执行此 ssh 命令时传递参数。所以我必须在中使用这些参数脚本文件。这是我正在尝试执行的脚本

    var1=True
    var2=False
    var3=True

    sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh

我的 sc.sh 看起来像:

    if var1 -eq True; then
       echo "Todo"
    fi

    if var2 -eq True; then
       echo "Todo"
    fi

    if var3 -eq True; then
       echo "Todo"
    fi

    ..... so on

我如何将 var1、var2、var3 作为参数传递并在我的脚本中使用它们,如上所述?

答案1

这个问题之前已经回答过问题

然而,您可能想要做的事情如下所示。

脚本文件

#!/bin/bash

var1=$1
var2=$2
var3=$3

if $var1 -eq True; then
   echo "Todo1"
fi

if $var2 -eq True; then
   echo "Todo2"
fi

if $var3 -eq True; then
   echo "Todo3"
fi

然后运行以下命令

ssh user@remote-01 'bash -s' < test.sh true true true

BASH 中的参数可以通过 $number 引用,例如 $1

答案2

最后通过多次尝试和错误尝试得到了解决方案。

 var1="True"
 var2="False"
 var3="True"

 sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh "$var1 $var2 $var3"

并应按如下方式使用脚本文件

if [ "$1" = "True" ]; then
   echo "Todo"
fi
if [ "$2" = "False" ]; then
   echo "Todo"
fi
if [ "$3" = "True" ]; then
   echo "Todo"
fi

答案3

在这里,我们将变量 var1/var2/var3 作为环境变量在ssh命令行上传递,然后这些变量可用于m/cbash上的代码。remote

var1="$var1" var2="$var2" var3="$var3" \
   sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh

的内容sc.sh将是:

if [ "$var1" = True ]; then
   echo "Todo"
fi

if [ "$var2" = True ]; then
   echo "Todo"
fi

if [ "$var3" = True ]; then
   echo "Todo"
fi

..... so on

相关内容