2013-04-24 129 views
0

我寫了一個輸出用戶選擇的URL的小Ruby腳本。我想將此URL嵌入到我的Bash腳本中,以便它直接提供給wget部分,而不是強制用戶複製和粘貼鏈接。目前的代碼如下:將Ruby腳本結果回傳到Bash腳本變量中

>echo "Choose file to download" 
>./myscript.rb # 
>echo "Copy and Paste URL" 
>read answer 
>wget -O /myfile.zip "$answer" 

任何幫助,使這將不勝感激。

編輯:

>"Choose file to download" 
>18 obfuscated1.zip 891 Thu, 18 Apr 2013 16:13:05 GMT 
>19 obfuscated2.zip 892 Fri, 19 Apr 2013 16:13:53 GMT 
>20 obfuscated3.zip 893 Sat, 20 Apr 2013 16:13:16 GMT 
>20 
>http://s3-us.amazonaws.com/obfuscated3.zip/AWSAccessKeyId=/Expires=/Signature= 

URL標記化產出和這裏簡稱爲明顯的原因。

回答

2

你可以使用命令替換做到這一點:

answer=$(./myscript.rb) 
wget -O /myfile.zip "$answer" 

更新:

我還沒有考慮過你的腳本,會輸出比你感興趣的URL

鑑於你至少可以:

  1. 修改myscript.rb以發出標準輸出上的URL和其他標準錯誤上的消息。那麼你應該可以使用上面的解決方案。

  2. 運行wgetmyscript.rb使用system Ruby的方法是這樣的:

    # the url variable holds the URL chosen by the user 
    system("wget -O /myfile.zip #{url}") 
    
+0

謝謝你的快速反應。使用該命令將腳本凍結在「answer = $(./ myscript.rb)」處。我認爲是因爲用戶在Ruby腳本內部提供了一個答案,該腳本產生了適當的URL。有沒有一種方法可以將URL結果回顯到變量中,或者您認爲最好查找Ruby解決方案嗎? – LFoos24 2013-04-24 15:56:57

+0

它不應該凍結。嘗試用這個超級簡單的Ruby腳本'puts(gets.chomp)'替換你的'myscript.rb'。它凍結? – toro2k 2013-04-24 16:09:30

+2

它沒有凍結; 'myscript.rb'可能會提示用戶輸入內容,但不會顯示提示符,因爲它是由'$(...)'語法捕獲的。 – chepner 2013-04-24 16:12:09