在 Linux 中,您可以使用以下命令针对四个具有连续名称的不同服务器xargs -d,
快速运行该命令:hostname
echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname
看起来 OSX xargs 命令不支持分隔符参数。您可以使用不同格式的echo
或通过其他命令行实用程序实现相同的结果吗?
答案1
怎么样:
echo {1..4} | xargs -n1 -I{} ssh root@www{}.example.com hostname
从man xargs
:
-n number
Set the maximum number of arguments taken from standard input for each invocation of utility.
答案2
或者,你也可以xargs
通过以下方式安装 GNU自制和 GNUfindutils
软件包。
安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
按照说明操作。然后安装 findutils:
brew install findutils
这将为您提供 GNU xargs
as gxargs
,并且您可以使用您习惯的 GNU/Linux 语法。 findutils 包中的其他基本命令(例如gfind
或glocate
或 )也是如此gupdatedb
,它们在 OS X 上有不同的 BSD 对应命令。
答案3
您还可以tr
在 OSX 中使用将逗号转换为新行,并使用 xargs 枚举每个项目,如下所示:
echo -n 1,2,3,4 | tr -s ',' '\n' | xargs -I{} ssh root@www{}.example.com hostname
答案4
使用 printf
$ printf '%s\n' 1 2 3 4 | xargs -I{} echo ssh root@www{}.example.com hostname
ssh [email protected] hostname
ssh [email protected] hostname
ssh [email protected] hostname
ssh [email protected] hostname