명령줄에서만 bash 비교 표현식을 평가/확인하는 방법은 무엇입니까?

명령줄에서만 bash 비교 표현식을 평가/확인하는 방법은 무엇입니까?

if다음 표현식이 명령문에서 어떻게 작동하는지 보고 싶다고 가정해 보겠습니다.

[ `ps -p 4800 -o comm=` == "ssh-agent" ]

하지만 저는 이를 위해 특별한 스크립트를 작성하고 싶지 않습니다. 어떤 부울 값을 반환하는지 확인하기 위해 라이브 셸에서 이 명령문을 평가 및/또는 실행할 수 있습니까?

명령줄에 넣으면 맹세합니다.

$ [ `ps -p 4800 -o comm=` = "ssh-agent" ]
-bash: [: =: unary operator expected

$ [ `ps -p 4800 -o comm=` == "ssh-agent" ]
-bash: [: ==: unary operator expected

답변1

아무것도 반환 되지 않으면 ps첫 번째 문자열이 사라지고 [두 개의 매개변수만 표시됩니다. 문제를 해결하려면 큰따옴표를 사용하세요.

[ "`ps -p 4800 -o comm=`" = ssh-agent ]
echo $?

$?조건이 true를 반환하면 0입니다.

ssh-agent그런데, 특별한 문자가 없기 때문에 큰따옴표가 필요하지 않습니다 .

관련 정보