-bash :! ": 큰 따옴표 느낌표가 특별한 의미를 가지고 있기 때문에 이벤트가 오른쪽에 작은 따옴표, 오류를 발견하지

요구 사항에 대한 설명 :

  프로세스의 에코로 변경 사용자 암호 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 ~] $ 

코드를 복사

참고 : 마찬가지로 동일한 효과를 얻을, 거기에는 작은 따옴표없는 따옴표를 사용하지 마십시오.

게시 15 개 원래 기사 · 원의 칭찬 0 · 조회수 3045

추천

출처blog.csdn.net/xx_ay/article/details/104264433