여러분, 안녕하세요
목적: 파일에 문자열이 있는지 확인하고 그에 따라 작업을 실행합니다.
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
실행할 수 있는 경우 :grep
cat
if sudo grep -xqFe "$USER ALL=(ALL) NOPASSWD:ALL" /etc/sudoers
then
echo found
else
echo not found
fi
-q
grep
조용히 하고 종료 상태를 통해 true/false 상태만 반환하고 표준 출력에는 아무 것도 출력하지 않도록 지시합니다 .
sudoers 구성에는 이 방법으로 고려되지 않는 다른 구성 파일이 포함될 수 있습니다. 사용자가 속한 그룹에 부여된 권한도 마찬가지입니다.
을 사용하고 싶을 수도 있습니다 sudo -lU "$USER"
.