2014-02-22 5 views
1

bash 스크립트를 사용하여 중요한 데이터를 stdin으로 전달하려고합니다. 내가bash echo가 ps로 나타납니다

echo "This is verysecretmessage" | IamAwaitingStdin 
내가 echo 이후 /bin/bash가 내장되어 그것이 ps에 표시되지해야한다고 생각

또는 다른 곳을 사용할 수 있는지 궁금 해서요, 맞습니까?

하지 않는 경우로 캡슐화 할 때, 예를 들면,이 (

IamAwaitingStdin <<EOF 
This is verysecretmessage 
EOF 

위의 솔루션은 그럼 어떻게 내가 bash는 스크립트에 <<EOF bla bla EOF 구문을 사용할 수 있습니다 대신 작동합니다)? 구문은 무엇입니까?

나는 bash는이 한 줄

$(IamAwaitingStdin << EOF 
This is verysecretmessage 
EOF) 

감사 때문에이 일이 정확하지 않은 것 같아요!

+0

어떤 프로그램이 표준 입력을 통해 일반 텍스트 데이터를 전달해야합니까? 강력한 보안을 가진 프로그램은 이보다 더 안전한 방법을 갖습니다. 예를 들어'ssh'는 명령 행이나 스크립트에 패스워드를 삽입하는 유혹을받지 않도록 stdin을 통해 비밀 데이터를 전달하는 것을 막기 위해 매우 열심히 노력합니다. –

+0

당신은 완벽하게 맞습니다. 그러나 이것은 학교 과제이므로 비협조적입니다. 나는 그가 이미 그것을 알고 있다고 생각하지만 나는 그것을 가정교사에게 지적 할 것이다. (여기도 http://mywiki.wooledge.org/BashFAQ/078에서 언급했듯이) – Mike

답변

2
  1. echo이 별도의 프로세스를 생성하지 않는 것이 맞습니다. 새로운 프로세스의 이름은 파이프의 다른 쪽에서 올 것입니다.

  2. $( ... )의 here- 문서가있는 예제는 정상적으로 작동합니다. 대부분의 bash 구문은 정상적으로 작동하지 않지만 여러 줄에 걸쳐있을 수 있습니다. (대부분에서 당신은 \에 일부 포함 된 개행 문자를 탈출해야 할 수도 있습니다,하지만 $( 내 ... )도 그 필요는 없습니다.)

  3. 당신은 또한 대신 히어 닥의 herestring를 사용할 수 있습니다

    IamAwaitingStdin <<<"This is verysecretmessage"