私は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を出力する別の関数があります。 2つの出力を結合します。
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より優れているのですか?