【问题标题】:Anyone can explain to me ip="${ip:-${default_ip}}任何人都可以向我解释 ip="${ip:-${default_ip}}
【发布时间】:2019-09-21 05:19:55
【问题描述】:

我需要你们的帮助来理解这段黑代码。最后一行有问题。

谢谢

    default_ip=$(hostname -I)   //display localhost ip?
    printf Put your local IP    //print statement
    read ip                     //save input to $ip
    ip="${ip:-${default_ip}}"   //not sure what is this, can you help?

谢谢

【问题讨论】:

  • bash 手册页有这个.. ` ${parameter:-word} 使用默认值。如果参数未设置或为空,则替换单词的扩展。否则,参数的值被替换 `

标签: bash parameter-expansion


【解决方案1】:

首先:// 不是 shell 语法中的注释标记;使用#。请非常小心尝试在 shell 中使用其他语言的语法,因为它通常是不同的。 Here 就是这个错误导致服务器被删除的例子。

现在,到脚本:

default_ip=$(hostname -I)

hostname -I 打印计算机的所有 IP 地址(以空格分隔)。 $() 将内容作为命令运行,并捕获该输出。 default_ip= 部分将该输出分配给 default_ip 变量。 hostname -I 打印计算机的所有 IP 地址(以空格分隔),这就是 default_ip 的设置。

printf Put your local IP

这行不通。 Put your local IP 部分周围应该有引号吗?无论如何,printf 会打印东西,但使用起来有点复杂,所以我只回避这部分问题。

read ip

从标准输入(默认为终端)读取内容,并将其存储在ip 变量中。

ip="${ip:-${default_ip}}"

使用变量default_ip 作为ip 变量的默认值。 ${thing1:-thing2} 语法试图获取变量 thing1 的值,但如果它没有被定义为变量或被定义为空字符串,它会使用字符串 thing2。本例中thing2${default_ip},获取变量default_ip的值。

基本上,这意味着如果用户只是点击返回而不是输入 IP 地址,它会使用来自 hostname -I 的输出。

【讨论】:

  • mongodb 灾难。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2011-03-31
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多