首页 > 解决方案 > 任何人都可以向我解释 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?

谢谢你

标签: bashparameter-expansion

解决方案


第一://不是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来代替。在这种情况下,thing2is ${default_ip},它获取变量 的值default_ip

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


推荐阅读