mount命令不能使用xargs

时间:2016-05-06 16:12:45

标签: bash

我做了这个命令。

  aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" |  jq '.Reservations[0].Instances[0].PrivateIpAddress' | mount -t nfs -o vers=4,nfsvers=4 xargs:/mnt/gradle /mnt/gradle

但似乎xargs不能在mount命令中使用。 这是错误

mount.nfs:无法解析服务器xargs:名称或服务未知

知道出了什么问题

2 个答案:

答案 0 :(得分:1)

这样做:

.... | xargs -I'{}' mount -t nfs -o vers=4,nfsvers=4 <IP_or_hostname>:'{}' '{}'

答案 1 :(得分:1)

你不太清楚自己要做什么。 但首先让我们通过打破这条线来理解这条线:

aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" | \
  jq '.Reservations[0].Instances[0].PrivateIpAddress' | \
  mount -t nfs -o vers=4,nfsvers=4 xargs:/mnt/gradle /mnt/gradle

您正在尝试使用mount命令。 这不起作用,因为mount命令不从stdin获取参数。要为mount的每一行投放stdin,您可以使用xargs

aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" | \
  jq '.Reservations[0].Instances[0].PrivateIpAddress' | \
  xargs -I{} mount -t nfs -o vers=4,nfsvers=4 '{}':/mnt/gradle /mnt/gradle

我假设stdin中的行是ip地址。例如,如果它包含行192.168.1.10,则将执行以下命令:

mount -t nfs -o vers=4,nfsvers=4 192.168.1.10:/mnt/gradle /mnt/gradle

但是,如果输入中有多行,我不确定您预期会发生什么。通过我给出的这个示例,只有最后一个服务器可以通过本地挂载点/mnt/gradle访问。