我正在编写一个脚本,用于从运行 OS X 的主机检索序列号,然后将该数字附加到 URL 的末尾。
#!/bin/bash
# Retrieve serial number in OS X, then append serial number to URL
### Retrieve serial number ###
function serial_number(){
local serialnum=$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}')
# Use system_profiler to poll info, then print 4th column of Serial from SPHardwareDataType
# write_header "Serial Number"
echo "${serialnum}"
echo ""
}
### Append serial number to URL ###
function apple_link(){
local appleurl=$"https://support.apple.com/specs/${serialnum}"
echo "${appleurl}"
echo ""
}
### Testing ###
apple_link
我得到的结果是:https://support.apple.com/specs/
,它不显示附加的序列号。我不完全确定这是为什么?任何关于如何“修复”我的疏忽的意见或建议将不胜感激。提前致谢。
答案1
您有一个输出序列号的函数和另一个输出 URL 的函数。合并两个输出:
url="$(apple_link)$(serial_number)"
或者,在apple_link
函数中:
local appleurl="https://support.apple.com/specs/$(serial_number)"
将$( ... )
扩展为命令的输出。
除此之外唯一需要改变的是删除echo ""
.
如果你想正确地做到这一点:
serial_number () {
system_profiler SPHardwareDataType | awk '/Serial/ { print $4 }'
}
apple_link () {
printf 'https://support.apple.com/specs/%s\n' "$( serial_number )"
}
请注意,无需在任何地方或echo
任何事物上使用任何变量。之所以printf
存在是因为它是更安全的替代品echo
。看为什么 printf 比 echo 更好?