任何人都可以向我解释 ip="${ip:-${default_ip}}

Anyone can explain to me ip="${ip:-${default_ip}}

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

谢谢

    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?

谢谢

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

现在,到脚本:

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.

的值

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