Bash在单行命令

时间:2018-03-14 11:12:42

标签: bash centos7 dig

我试图为CentOS 7.3主机提取FQDN。这是我使用的脚本:

hostname=$(dig +short -x 10.10.10.10)
hostname=${hostname%.}

第二行的原因是dig输出在结尾处返回一个点.,例如abc@def.com.。因此第二行剥去最后一个字符,即.

有没有办法可以在一行中作为单行命令执行此操作?像hostname=${$(dig +short -x 10.142.114.44)%.}这样的东西。基本上,我希望在另一个变量中扩展变量。我尝试使用${!..}但无法使其正常工作并最终导致替换错误。我提到了thisthis

1 个答案:

答案 0 :(得分:3)

不,参数扩展只能应用于参数,并且不能嵌套。

您可以通过管道输出在单个命令中执行此操作:

hostname=$(dig +short -x 10.10.10.10 | sed -e 's/\.$//')

但它不是更干净,只是更慢。