第一://
不是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
。