cat grep을 사용하여 파일에 문자열이 있는지 확인하십시오.

cat grep을 사용하여 파일에 문자열이 있는지 확인하십시오.

여러분, 안녕하세요

목적: 파일에 문자열이 있는지 확인하고 그에 따라 작업을 실행합니다.

if [ -z 'sudo cat /etc/sudoers | grep "$USER ALL=(ALL) NOPASSWD:ALL"' ]; echo "no output, cont." || echo "line exists, skipping"

행이 존재하지만 존재하지 않는 봇의 경우 출력에는 항상 "행이 존재하며 건너뛰었습니다"라고 표시됩니다.

출력을 변수(예: x)에 추가하고 if 문의 줄을 해당 변수로 바꾸면 올바른 출력이 생성됩니다.

변수 라우팅을 "건너뛰고" 명령을 직접 실행할 수 있는 방법은 무엇입니까?

답변1

grep조건부 명령으로 사용할 수 있습니다. 패턴이 일치하면 true를 반환합니다. 여기서는 문자열 검색( )을 수정 하고 -F전체 줄( )에서 -x일치시킬 수도 있습니다.

if sudo cat /etc/sudoers |
  grep -xqFe "$USER ALL=(ALL) NOPASSWD:ALL"
then
  echo found
else
  echo not found
fi

또는 구성에서 다음 이외의 명령을 sudoers실행할 수 있는 경우 :grepcat

if sudo grep -xqFe "$USER ALL=(ALL) NOPASSWD:ALL" /etc/sudoers
then
  echo found
else
  echo not found
fi

-qgrep조용히 하고 종료 상태를 통해 true/false 상태만 반환하고 표준 출력에는 아무 것도 출력하지 않도록 지시합니다 .

sudoers 구성에는 이 방법으로 고려되지 않는 다른 구성 파일이 포함될 수 있습니다. 사용자가 속한 그룹에 부여된 권한도 마찬가지입니다.

을 사용하고 싶을 수도 있습니다 sudo -lU "$USER".

관련 정보