변수에 BASH 명령 출력

Bash Command Output Variable



사용자의 요구 사항에 따라 터미널에서 다양한 유형의 bash 명령을 실행해야 합니다. 사용자가 터미널에서 명령을 실행할 때 오류가 없으면 출력을 표시하고 그렇지 않으면 오류 메시지를 표시합니다. 때때로 명령의 출력은 나중에 사용할 수 있도록 변수에 저장해야 합니다. 이를 위해 bash의 쉘 명령 대체 기능을 사용할 수 있습니다. 이 기능을 사용하여 다양한 유형의 셸 명령을 변수에 저장하는 방법은 이 자습서에 나와 있습니다.

변하기 쉬운= $(명령)
변하기 쉬운= $(명령 [옵션…]인수1 인수2 ...)
변하기 쉬운= $(//에게/명령)

또는







변하기 쉬운=``명령``
변하기 쉬운=``명령 [옵션…]인수1 인수2 ...``
변하기 쉬운=`//에게/명령``

***참고: 위의 명령을 사용할 때 등호 앞뒤에 공백을 사용하지 마십시오.



변수에 대한 단일 명령 출력

Bash 명령은 이러한 부분이 선택 사항인 명령에 대한 옵션 및 인수 없이 사용할 수 있습니다. 다음 두 예는 단순 명령 대체의 사용을 보여줍니다.



예 #1:

배쉬 ` 데이트` 명령은 현재 날짜와 시간을 표시하는 데 사용됩니다. 다음 스크립트는 ` 데이트` $에 명령 현재_날짜 명령 대체를 사용하여 변수.





$현재_날짜= $(데이트)
$던졌다 '오늘은$current_date'

산출:



예 #2:

`pwd` 명령은 현재 작업 디렉토리의 경로를 보여줍니다. 다음 스크립트는 출력을 저장합니다. `pwd` 변수에 명령, $ 현재_디렉토리 이 변수의 값은 다음을 사용하여 인쇄됩니다. '에코' 명령.

$현재_디렉토리=``암호``
$던졌다 '현재 디렉토리는 다음과 같습니다.$ 현재_디렉토리'

산출:

옵션 및 인수가 있는 명령

일부 bash 명령에는 옵션과 인수가 필수입니다. 다음 예는 옵션 및 인수가 있는 명령의 출력을 변수에 저장하는 방법을 보여줍니다.

예 #3:

배쉬 ` 화장실 명령은 파일의 총 줄, 단어 및 문자 수를 계산하는 데 사용됩니다. 이 명령은 -c, -w 및 -l을 옵션으로 사용하고 파일 이름을 인수로 사용하여 출력을 생성합니다. 라는 이름의 텍스트 파일을 만듭니다. 과일.txt 다음 데이터를 사용하여 다음 스크립트를 테스트합니다.
과일.txt

과일.txt
망고
주황색
바나나
포도
구아바
사과

다음 명령을 실행하여 총 단어 수를 계산하고 저장합니다. 과일.txt 파일을 변수에 넣고, $count_words `를 사용하여 값을 인쇄하십시오. 에코` 명령.

$count_words=``화장실 -에과일.txt``
$던졌다 'fruits.txt의 총 단어는$count_words'

산출:

예 #4:

'컷' 옵션과 인수를 사용하여 출력을 생성하는 또 다른 bash 명령입니다. 라는 이름의 텍스트 파일을 만듭니다. 평일.txt 다음 스크립트를 실행하기 위해 7개의 요일 이름을 사용합니다.

평일.txt

월요일
화요일
수요일
목요일
금요일
토요일
일요일

라는 이름의 bash 파일을 만듭니다. cmdsub1.sh 다음 스크립트로. 이 스크립트에서는 동안 루프는 내용을 읽는 데 사용됩니다. 평일.txt 파일을 한 줄씩 파일을 만들고 `를 사용하여 각 줄의 처음 세 문자를 읽습니다. 컷` 명령. 자르기 후 문자열 값은 변수에 저장됩니다. $일 . 다음으로 문이 값을 확인하는 데 사용되는 경우 $일 이다 ' 해' 아니면. 출력은 ' 일요일은 휴무 ' 조건이 참일 때 그렇지 않으면 값을 출력합니다. $일 .

cmdsub1.sh

#!/bin/bash
파일 이름='weekday.txt'
동안 읽다선;~하다
=``던졌다 $라인 | 자르다 -씨 1-``
만약 [ $일=='해' ]
그 다음에
던졌다 '일요일은 휴무다'
또 다른
던졌다 $일
~이다
완료<$파일명

스크립트를 실행합니다.

$고양이평일.txt
$세게 때리다cmdsub1.sh

산출:

루프에서 명령 대체 사용

다음 예에 표시된 루프 변수에 명령 대체 출력을 저장할 수 있습니다.

예 #5:

라는 이름의 파일 생성 cmdsub2.sh 다음 코드로. 여기서 ` ls -d * / ` 명령은 현재 디렉토리에서 모든 디렉토리 목록을 검색하는 데 사용됩니다. For 루프는 출력에서 ​​각 디렉토리를 읽고 변수에 저장하는 데 사용됩니다. $dirname 나중에 인쇄됩니다.

cmdsub2.sh

#!/bin/bash
~을위한 디렉토리 ~에$( -NS * /)
~하다
던졌다 '$dirname'
완료

스크립트를 실행합니다.

$세게 때리다cmdsub2.sh

산출:

중첩 명령 사용

파이프(|)를 사용하여 여러 명령을 사용하는 방법은 이전 예제에 나와 있습니다. 그러나 첫 번째 명령의 출력이 두 번째 명령의 출력에 따라 달라지고 pipe(|) 명령과 반대로 작동하는 명령 대체에서 중첩된 명령을 사용할 수 있습니다.

중첩된 명령 구문:

어디=``명령1 ``명령``

예 #6:

두 개의 명령, ` 던졌다 ` 및 ` WHO `는 이 예에서 중첩 명령으로 사용됩니다. 여기서 ` WHO ` 명령이 먼저 실행되어 현재 로그인한 사용자의 사용자 정보를 출력합니다. `의 출력 WHO ` 명령은 `에 의해 실행됩니다. 던졌다 ` 명령과 `의 출력 던졌다 ` 변수에 저장 $ var . 여기서 `의 출력 던졌다 ` 명령은 `의 출력에 따라 다릅니다. WHO ` 명령.

$어디=``던졌다``WHO``
$던졌다 $ var

산출:

명령 경로 사용

명령의 경로를 알고 있으면 명령 대체를 사용할 때 명령 경로를 지정하여 명령을 실행할 수 있습니다. 다음 예는 명령 경로의 사용을 보여줍니다.

예 #7:

'우아미' 명령은 현재 로그인한 사용자의 사용자 이름을 보여줍니다. 기본적으로 이 명령은 다음 위치에 저장됩니다. / usr/ 오전/ 폴더. 다음 스크립트를 실행하여 ` 워미` 경로를 사용하는 명령 및 변수에 저장, $출력, 의 값을 인쇄하십시오. $출력 .

$산출= $(/usr/오전/워미)
$던졌다 $출력

산출:

명령줄 인수 사용

명령 대체에서 명령과 함께 명령줄 인수를 인수로 사용할 수 있습니다.

예 #8:

라는 이름의 bash 파일을 만듭니다. cmdsub3.sh 다음 스크립트로. ` 기본 이름 ` 명령은 2에서 파일 이름을 검색하는 데 사용됩니다.NS명령줄 인수 및 변수에 저장, $파일명 . 우리는 1을 안다명령줄 인수는 $0으로 표시되는 실행 스크립트의 이름입니다.

#!/bin/bash
파일 이름=``기본 이름 $ 1``
던졌다 '파일 이름은$파일명'

다음 인수 값으로 스크립트를 실행하십시오.

$세게 때리다cmdsub3.sh 데스크탑/온도/안녕하세요.txt

여기, 기본 이름 경로의, 데스크탑/임시/hello.txt 이다 ' 안녕하세요.txt '. 따라서 의 값은 $파일명 될거야 안녕하세요.txt .

산출:

결론:

이 자습서에서는 명령 대체의 다양한 사용을 보여줍니다. 여러 명령 또는 종속 명령으로 작업하고 나중에 다른 작업을 수행하기 위해 결과를 임시로 저장해야 하는 경우 스크립트에서 이 기능을 사용하여 출력을 얻을 수 있습니다.

비디오의 추가 정보: