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
스크립트에 몇 가지 문제가 있습니다.
오류는 이
export
줄에서 발생합니다. as 명령을 사용하고$SERVER
있으며 명령을 찾을 수 없습니다. 당신이하고 싶은 것은 문자열을 다음에 넣는 것입니다cut
:print $SERVER | cut -c1-2,5-10 | ...
이 줄이
SERVER="echo `hostname`"
더 잘 쓰여졌네요SERVER=$(hostname)
이 유틸리티는 문자 범위를 사용하므로 또는 를 묶을
tr
필요가 없습니다 . 그러나 따옴표로 묶으십시오.[:upper:]
[:lower:]
[ ... ]
tr '[:lower:]' '[:upper:]'
tr
이는 쉘과 같은 것을 사용하려는 경우 좋은 습관입니다*
. 그렇지 않으면 쉘이 이를 와일드카드 패턴으로 처리합니다.일반적으로
$( ... )
백틱 대신 백틱을 사용합니다. 코드를 더 읽기 쉽고, 중첩하기 쉽게 만들고,다른 여러 면에서 더 나은.
답변2
Bash 스크립트를 만듭니다.
OUTPUT="$(hostname)"
echo "${OUTPUT}"
다음 명령을 사용하여 bash 스크립트를 실행하십시오../scriptname.sh