ksh의 변수에 호스트 이름 할당

ksh의 변수에 호스트 이름 할당

hostname변수의 출력을 변수에 할당하고 이를 스크립트에서 사용하려고 합니다 . 변수를 다른 로직으로 가져올 수 있지만 변수를 인쇄하려고 하면 변수가 인쇄되지 않습니다.

이것이 내가 하고 싶은 일이다:

hostname서버로 돌아갑니다 xy29abcd01.

이를 변수에 할당한 다음 이를 사용하여 호스트 이름의 세 번째와 네 번째 문자를 제거하고 다른 변수에 할당하고 싶습니다.

이게 내가 가진 거야

#!/bin/ksh

print " Get queue manager name"
SERVER="echo `hostname`"
print"$SERVER"
export QMGR=`$SERVER |cut -c1-2,5-10| tr [[:lower:]] [[:upper:]`

print "Queue manager name $QMGR"

이 명령을 실행할 때의 출력은 다음과 같습니다.

Get queue manager name
./test.sh[13]: printecho xy29abcd01: not found [No such file or directory]
Queue manager name XYABCD01

SERVER 변수를 할당할 때 여기서 뭔가 잘못된 일을 하고 있습니다. 원하는 출력

xy29abcd01
Queue manager name XYABCD01

답변1

스크립트에 몇 가지 문제가 있습니다.

  1. 오류는 이 export줄에서 발생합니다. as 명령을 사용하고 $SERVER있으며 명령을 찾을 수 없습니다. 당신이하고 싶은 것은 문자열을 다음에 넣는 것입니다 cut:

    print $SERVER | cut -c1-2,5-10 | ...
    
  2. 이 줄이 SERVER="echo `hostname`"더 잘 쓰여졌네요

    SERVER=$(hostname)
    
  3. 이 유틸리티는 문자 범위를 사용하므로 또는 를 묶을 tr필요가 없습니다 . 그러나 따옴표로 묶으십시오.[:upper:][:lower:][ ... ]

    tr '[:lower:]' '[:upper:]'
    

    tr이는 쉘과 같은 것을 사용하려는 경우 좋은 습관입니다 *. 그렇지 않으면 쉘이 이를 와일드카드 패턴으로 처리합니다.

  4. 일반적으로 $( ... )백틱 대신 백틱을 사용합니다. 코드를 더 읽기 쉽고, 중첩하기 쉽게 만들고,다른 여러 면에서 더 나은.

답변2

Bash 스크립트를 만듭니다.

OUTPUT="$(hostname)"
echo "${OUTPUT}"

다음 명령을 사용하여 bash 스크립트를 실행하십시오../scriptname.sh

관련 정보