Bash 在单行命令中在另一个变量中扩展变量
Bash expand variable within another variable in a single line command
我正在尝试提取 CentOS 7.3 主机的 FQDN。这是我使用的脚本:
hostname=$(dig +short -x 10.10.10.10)
hostname=${hostname%.}
第二行的原因是 dig
输出 returns 末尾的一个点 .
例如abc@def.com.
。因此第二行去除最后一个字符,即 .
有没有一种方法可以像单行命令一样在一行中执行此操作?类似于 hostname=${$(dig +short -x 10.142.114.44)%.}
。基本上,我希望在另一个变量中扩展变量。我尝试使用 ${!..}
但无法使其工作并最终出现替换错误。我提到了 this and also this.
不能,参数扩展只能应用于参数,不能嵌套。
您可以通过管道输出在一条命令中完成:
hostname=$(dig +short -x 10.10.10.10 | sed -e 's/\.$//')
但它并不干净,只是更慢。
我正在尝试提取 CentOS 7.3 主机的 FQDN。这是我使用的脚本:
hostname=$(dig +short -x 10.10.10.10)
hostname=${hostname%.}
第二行的原因是 dig
输出 returns 末尾的一个点 .
例如abc@def.com.
。因此第二行去除最后一个字符,即 .
有没有一种方法可以像单行命令一样在一行中执行此操作?类似于 hostname=${$(dig +short -x 10.142.114.44)%.}
。基本上,我希望在另一个变量中扩展变量。我尝试使用 ${!..}
但无法使其工作并最终出现替换错误。我提到了 this and also this.
不能,参数扩展只能应用于参数,不能嵌套。
您可以通过管道输出在一条命令中完成:
hostname=$(dig +short -x 10.10.10.10 | sed -e 's/\.$//')
但它并不干净,只是更慢。