편집하다:나는 그것이 그것과 아무 관련이 없으며 $()
단지 사용의 결과라는 것을 알고 있습니다 echo *
. 그래서 탈출할 방법이 필요했어요 echo
.
/etc/passwd
합계를 비교하여 비밀번호가 없는 사용자를 확인하는 스크립트를 작성 중입니다 /etc/shadow
.
지금까지 나는 다음을 가지고 있습니다 :
cat /etc/passwd | while read -r line ; do
user=$(echo $line | cut -d ":" -f 1)
password=$(cat /etc/shadow | grep $user | cut -d ":" -f 2)
echo $password
done
문제는 내 grep의 결과가 *
비밀번호 필드인 경우(비밀번호가 없는 모든 사용자에 대한 경우) ls *
실행되는 것 같다는 것입니다. 예를 들어:
왜 이런 일이 일어나는지 혼란스러워요. 여기서 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있나요? 이미지 하단에 암호화된 비밀번호가 포함된 답변은 예상된 동작입니다. 비밀번호가 없는 항목의 경우 비밀번호를 얻고 싶습니다 *
.
답변1
echo "$password"
이렇게 하면 쉘 전역 변수를 호출하지 않고도 변수(여기 *
)를 삽입할 수 있습니다.