2016-02-29 63 views
0

我試圖將安裝腳本轉換爲使用install命令,而不是創建文件並針對它運行chmod +x。這是腳本現在:如何將安裝命令與heredoc一起使用

#!/usr/bin/env bash 

install_target=/usr/local/bin/my_prog 
volatile_path=/this/path/could/change 

cat <<EOF> "$install_target" 
#!/usr/bin/env bash 

"$volatile_path/some_other_executable" "\[email protected]" 
EOF 
chmod +x "$install_target" 

我寧願做的是一樣的東西:

#!/usr/bin/env bash 

install_target=/usr/local/bin/my_prog 
volatile_path=/this/path/could/change 

install "$install_target" << EOF 
#!/usr/bin/env bash 

"$volatile_path/some_other_executable" "\[email protected]" 
EOF 

我缺少什麼,使這項工作?

+0

對於標準輸入,'install'期待什麼?它是文本文件的內容嗎?快速查看'install --help'可能會給你一個想法。 – miken32

+0

我希望我的用戶可用的安裝版本僅提供'--help'的文字用法,沒有任何解釋。然而,手冊頁提供了更多的解釋,似乎是要求文件名,而不是文件內容,所以我懷疑你幫我回答了我自己的問題。 – bschlueter

回答

1

基礎上的意見,並假設你正在使用安裝的BSD版本(GNU install具有由install --help顯示完整的幫助,而BSD只顯示基本的用法),我認爲這是你想要做什麼:

#!/usr/bin/env bash 

install_target=/usr/local/bin/my_prog 
volatile_path=/this/path/could/change 
temp_file=/tmp/$0.$$.$RANDOM 

cat <<EOF> "$temp_file" 
#!/usr/bin/env bash 

"$volatile_path/some_other_executable" "\[email protected]" 
EOF 

install -bd "$temp_file" "$install_target" 
rm -f "$temp_file" 
+0

是的,你打敗了我:+1: – bschlueter

相關問題