📜  dev stdin 使用传递参数执行远程脚本 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:30:26.588000             🧑  作者: Mango

使用stdin参数在远程服务器上执行脚本

在远程服务器上执行脚本是很常见的任务。但是,如何在客户端提供的参数上执行脚本可能会很棘手。我们可以使用一个stdin参数来解决这个问题。本文将介绍如何使用stdin参数来在远程服务器上执行脚本。

什么是stdin参数

在Unix-like系统中,stdin(standard input)是最基本的I/O设备之一。stdin是标准输入设备,可以将数据从键盘或其他设备中输入到程序中。

在Linux系统中,stdin也可以用于接受重定向输入、管道输入等。

当在命令行中输入一个命令时,stdin为标准输入。使用stdin参数可以将标准输入转换为一个命令行参数,以便向远程服务器提供数据(例如,命令行选项、路径、参数等)。

如何使用stdin参数

假设我们有一个远程服务器,上面有一个脚本文件。该脚本需要使用参数才能执行。我们希望以stdin方式提供程序的参数,以便在远程服务器上执行脚本。

以下是一个示例脚本,它需要以命令行参数的形式提供一个ID号:

#!/bin/bash

if [ $# -lt 1 ]
  then
    echo "Usage: $0 <ID>"
    exit 1
fi

echo "The ID is $1"

我们可以使用stdin参数来提供ID号。以下是一个使用stdin参数的示例命令:

echo 123 | ssh user@host 'bash -s' < script.sh

在上面的命令中,

  • echo 123打印数字123并将其作为标准输入;
  • |通过管道将输出发送到ssh命令中;
  • ssh user@host连接到远程服务器user@host;
  • bash -s执行一个新的Bash shell,并接受标准输入的命令,-s选项告诉Bash将标准输入读取为脚本;
  • < script.sh在Bash shell中输入script.sh脚本。

当我们执行以上命令时,它将在远程服务器上执行script.sh脚本,ID号为123。

结论

在本文中,我们介绍了如何使用stdin参数在远程服务器上执行脚本。使用stdin参数可以方便地将客户端提供的参数作为标准输入传递给脚本。这是一种方便的方法,可以减少命令行中输入的次数。