Bash의 다른 함수에 함수 출력 추가

Bash의 다른 함수에 함수 출력 추가

저는 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보다 나은가요?

관련 정보