요구 사항에 대한 설명 :
프로세스의 에코로 변경 사용자 암호 passwd를과 함께 오늘 과정에서 오류가 나타나지 수정할 수 없습니다.
다음과 같은 오류 :
[루트 @하여 testvm ~] # useradd와 MYTEST [루트 @하여 testvm ~] # 에코 "내 @ 테스트!" | passwd를 --stdin 옵션을 MYTEST -bash :! "이벤트를 찾을 수 없습니다
오류 분석 :
이 명령은 검색 느낌표를 통해 발견되는 특별 리눅스에서 정의, 역사는 명령을 실행하거나 사용하는 등 부정적인 논리로, 그래서 느낌표가 특수 문자하는 데 사용할 수 있습니다, 당신은 일반 문자로 문자를 원하는 사용은 이스케이프해야합니다.
문제 :
1.! 아니 이스케이프 문자 탈출
[루트 @하여 testvm ~] # 에코 "내 @ 테스트를 \!" 내 @ 테스트 \!
참고 :이 출력은 내부에 더 \ 따라서에서 발견,이 방법은하지 않습니다.
2.echo 출력은 나중에 작은 따옴표를 사용
[루트 @하여 testvm ~] # 에코 '내 @ 테스트!' 내 @ 테스트! [루트 @하여 testvm ~] # 에코 '$ 내 @ 테스트를! \ # % ' 내 @ 테스트를 $! \ # %
그것은 출력 문자열은 이스케이프하지 않고, 변수의 값을 고려하지 않는 것 작은 따옴표하면, 같이 참고
3. 수정은 사용자 암호와 passwd를 다시 메아리
[루트 @하여 testvm ~] # 에코 '내 @ 테스트!' | passwd를 --stdin 옵션을 MYTEST 사용자 MYTEST에 대한 암호 변경. 은 passwd : 모든 인증이 성공적으로 업데이트 토큰. [루트 @하여 testvm ~] # su -를 MYTEST [MYTEST @하여 testvm ~] $ su -를 MYTEST 암호: [MYTEST @하여 testvm ~] $
참고 :이 암호를 상징에 포함시킬 수 있습니다!
후 4. 당신이 사용하는 경우 큰 따옴표 문자 출력이 마지막 느낌표 것을 발견 테스팅을! 불평, 오류 뒤에 공백이있는 경우하지 않습니다
[루트 @하여 testvm ~] # 에코 "내 @ 테스트!"# 공간 뒤에, 그것을 출력 할 수 느낌표,이 이벤트의 마지막 이벤트가 걸릴 것입니다,하지만이 암호는 또한 공간이었다 느낌표합니다. 내 @ 테스트! [루트 @하여 testvm ~] # 에코 "내 @ 테스트!" -bash :! "이벤트를 찾을 수 없습니다
테스트 후 5. 다시 문자가 직접 작은 따옴표로 배치해야되지 않도록에 연결할 수있는 에코 따옴표에없는
[루트 @하여 testvm ~] # 에코 내 @ 테스트! | passwd를 --stdin 옵션을 MYTEST 사용자 MYTEST에 대한 암호 변경. 은 passwd : 모든 인증이 성공적으로 업데이트 토큰. [루트 @하여 testvm ~] # su -를 MYTEST [MYTEST @하여 testvm ~] $ su -를 MYTEST 암호: [MYTEST @하여 testvm ~] $
참고 : 마찬가지로 동일한 효과를 얻을, 거기에는 작은 따옴표없는 따옴표를 사용하지 마십시오.