command1과 command2라는 두 개의 정규 표현식이 있고 두 표현식을 하나의 표현식으로 결합하여 |
command1의 출력을 다음 표현식으로 전달해야 합니다.
명령 1:
grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6
>> Output : 00:00:01
명령 2:
head -n1 /sys/bus/pci/devices/00:00:01/resource | cut -d ' ' -f 1 | tail -c 9
command1을 사용하여 (00:00:01)을 command2로 출력하고 이를 단일 표현식으로 결합하려면 어떻게 해야 합니까?
답변1
한 명령의 출력을 두 번째 명령의 인수로 사용하는 메커니즘명령 대체 $()
쓸 수 있는. 예를 들어:
바꾸다
$ whoami
jimmij
$ ls /home/jimmij/tmp
file1 file2
넌 할 수있어
$ ls /home/"$(whoami)"/tmp
file file2
특정 경우에는 단일 명령이 다음과 같습니다.
head -n1 "/sys/bus/pci/devices/$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)/resource" | cut -d ' ' -f 1 | tail -c 9
나는 또한 전체 표현을 인용했습니다.여기를 읽어보세요왜 이렇게 해야 할까요?
답변2
$(command)
구문(또는 이전 구문)을 사용하십시오 `command`
.
DEVICE=$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)
head -n1 "/sys/bus/pci/devices/$DEVICE/resource" | cut -d ' ' -f 1 | tail -c 9
오. "표현식으로 결합"과 유사합니다.
DEVICE=$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)
OUTPUT=$(head -n1 "/sys/bus/pci/devices/$DEVICE/resource" | cut -d ' ' -f 1 | tail -c 9)
echo "Output is $OUTPUT"