2014-02-22 49 views
1

我試圖將敏感數據傳遞給stdin使用bash 腳本。 我在想,如果我可以使用是否bash echo在ps中顯示

echo "This is verysecretmessage" | IamAwaitingStdin 

我想,既然是echo/bin/bash內置了它不應該在ps顯示或其他地方,是正確的?

如果不是,例如,這將工作,而不是上述

IamAwaitingStdin <<EOF 
This is verysecretmessage 
EOF 

解決那我該怎麼使用<<EOF bla bla EOF語法在bash腳本封裝時,()?什麼是語法?

我想這個人是不是正確的,因爲是bash的一行

$(IamAwaitingStdin << EOF 
This is verysecretmessage 
EOF) 

謝謝!

+0

什麼程序需要(並讓)通過stdin傳遞純文本數據?具有強大安全性的程序將具有比這更安全的方法。例如'ssh'會盡力阻止您通過stdin傳遞祕密數據,這樣您就不會試圖在命令行或腳本中嵌入密碼。 –

+0

你完全正確的約翰。然而,這是一項學校任務,因此這是不可協商的。我會嚮導師指出,但我認爲他已經意識到這一點。 (如這裏所述http://mywiki.wooledge.org/BashFAQ/078) – Mike

回答

2
  1. 你是對的,echo不創建一個單獨的進程。新進程的名字將來自管道的另一端。

  2. 你的例子$( ... )帶有here-document將會很好地工作 - 大多數bash結構可以跨越多行,即使它們通常不會。 (最多可能需要逃避一些嵌入式的換行符與\,但內$( ... )甚至是沒有必要的。)

  3. 您還可以使用,而不是一個定界符herestring:

    IamAwaitingStdin <<<"This is verysecretmessage"