반응형
명령 출력을 변수에 할당
저는 유닉스를 처음 접했고 쉘 스크립트를 작성하고 있습니다.
명령 프롬프트에서이 줄을 실행하면 일치하는 총 프로세스 수를 인쇄합니다.
ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }'
예를 들어, 위 줄의 출력은 명령 프롬프트에서 2입니다.
위 줄 (2)의 출력이 변수에 할당되는 쉘 스크립트를 작성하고 싶습니다.이 변수는 나중에 if 문에서 비교에 사용됩니다.
나는 같은 것을 찾고있다
output= `ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }'`
echo $output
그러나 내가 그것을 실행하면 2를 예상하고 있지만 출력을 찾을 수 없다는 메시지가 표시됩니다. 도와주세요.
다음 $
과 같은 기호 를 사용할 수 있습니다 .
OUTPUT=$(expression)
시험:
output=$(ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }'); echo $output
명령을 래핑 $( )
하면 명령 자체를 "output"이라는 변수로 설정하는 대신 해당 명령을 실행하도록 쉘 에 지시합니다. (백틱`command`를 사용할 수도 있습니다.)
명령 대체에 대해 자세히 알아 보려면 http://tldp.org/LDP/abs/html/commandsub.html 을 적극 권장 합니다.
또한 1_CR이 주석에서 올바르게 지적했듯이 등호와 할당 사이의 추가 공백으로 인해 실패합니다. 다음은 경험하고있는 동작에 대한 내 컴퓨터의 간단한 예입니다.
jed@MBP:~$ foo=$(ps -ef |head -1);echo $foo
UID PID PPID C STIME TTY TIME CMD
jed@MBP:~$ foo= $(ps -ef |head -1);echo $foo
-bash: UID: command not found
UID PID PPID C STIME TTY TIME CMD
여러 줄 / 다중 명령으로 수행하려면 다음을 수행 할 수 있습니다.
output=$( bash <<EOF
#multiline/multiple command/s
EOF
)
또는:
output=$(
#multiline/multiple command/s
)
예:
#!/bin/bash
output="$( bash <<EOF
echo first
echo second
echo third
EOF
)"
echo "$output"
산출:
first
second
third
참조 URL : https://stackoverflow.com/questions/20688552/assigning-the-output-of-a-command-to-a-variable
반응형
'UFO ET IT' 카테고리의 다른 글
쉘 스크립트의 내용으로 파일 만들기 (0) | 2021.01.06 |
---|---|
Android Studio 프로젝트의 명령 줄에서 Gradle을 사용한 빌드 실패 : Xlint 오류 (0) | 2021.01.06 |
std :: lower_bound 및 std :: upper_bound의 이론적 근거? (0) | 2021.01.06 |
설정 방법 (0) | 2021.01.05 |
Windows 배치 스크립트에서 따옴표 처리 (0) | 2021.01.05 |