쉘 스크립트에서 `curl ifconfig.me`가 다르게 동작합니다.

쉘 스크립트에서 `curl ifconfig.me`가 다르게 동작합니다.

방금 내 시스템의 공개 IP를 얻기 위해 간단한 메뉴 기반 쉘 스크립트를 시도했습니다. (curl ifconfig.me) ..를 사용했지만 다르게 동작하는 것을 발견했습니다.

여기서 나는 다음을 시도했습니다.

anupam@JAZZ:~/Desktop$ cat menuui
#
# Script to create simple menus and take action according to that selection
# menu item
#
while :
do
    clear
    echo "___________________________________"
    echo "Main Menu"
    echo "___________________________________"
    echo "[1] Show Today's date/time"
    echo "[2] Show files in current directory"
    echo "[3] Show calendar"
    echo "[4] Start a calculator"
    echo "[5] Start editor to write letters"
    echo "[6] Show your public ip"
    echo "[7] Exit/Stop"
    echo "===================================="
    echo -n "Enter your menu choice[1-5]:"
    read yourch
    case $yourch in
    1) echo "Today is `date` ,press a key..." ; read ;;
    2) echo "Files in `pwd` "; ls -l;echo "Press a key..."; read;;
    3) cal; echo "Press a key..." ; read ;;
    4) bc;;
        5) vi;;
        6) echo "Your public ip is `curl ifconfig.me`";;
    7) exit 0 ;;
    *) echo "Opps!!! Please select choices 1,2,3,4 or 5";
    echo "Press a key...";read;;
    esac
done

그러다가 실행했는데... 여기에 이미지 설명을 입력하세요

예상했던 것과는 다릅니다..이 문제를 어떻게 해결할 수 있나요??

답변1

curl옵션 과 함께 사용하세요 -s. 에서man curl

-s, --silent
          Silent  or  quiet  mode. Don't show progress meter or error mes‐
          sages.  Makes Curl mute. It will still output the data  you  ask
          for, potentially even to the terminal/stdout unless you redirect
          it.

진행률 측정기나 오류 메시지와 같은 추가 세부정보는 표시되지 않습니다. 수정된 문은 다음과 같습니다.

echo "Your public ip is $(curl -s ifconfig.me)"

$()명령 대체 인용보다 사용하는 것이 더 좋습니다``

관련 정보