bash - 任何人都可以向我解释 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
is ${default_ip}
,它获取变量 的值default_ip
。
基本上,这意味着如果用户只是点击返回而不是输入 IP 地址,它会使用来自的输出hostname -I
。
推荐阅读
- python - 使用 xarray 时的段错误,仅在“导入火炬”时
- angular - 在浏览器中调试 TS 文件
- javascript - 将嵌套对象转换为对象的 Json Array
- json - 从 API 而不是 Json 文件访问数据
- ruby-on-rails - 在 Spree 中查找产品的卖家
- php - 根据过滤器 ID 过滤产品
- mysql - SQL如何处理int/string操作数和column之间的转换
- java - 使用 mod 10 时我没有得到数字的最后一位数字,而只是得到 0 的输出?
- php - SCSS 在我看来不起作用 [代码点火器]
- macos - 这是 Mac grep 中的错误吗?从文件中提取,但错过了一些模式