2016-07-27 29 views
-2

我想在一個bash腳本多個參數來執行一個命令:執行命令有多個參數在bash

#!/bin/bash 
read a[{1..3}] <<< $(echo /opt/CPshrd-R77/bin/cpview history off); echo "${a[1]} ${a[2]} ${a[3]}" 
#"/opt/CPshrd-R77/bin/cpview history off" 

for ((i =0 ; i < ${#a[@]} ; i++)) 
do 
     printf "\n Running '$(a[$1]}' \n\n" 
     eval "${a[$i]}" 
done 

我砍死在一起,從計算器上幾個例子,這個腳本。發生的事情是正在調用cpview實用程序,而不是完整的命令終止歷史記錄。 Cpview是一個Check Point工具,用於顯示CPU,內存,網絡狀態,防火牆性能等。它的bug和它有內存泄漏,所以我需要關閉它。

+1

爲什麼你需要所有腳本來運行'/ opt/CPshrd-R77/bin/cpview history off'命令? – anubhava

+1

......這裏有很多這是錯誤的,但它似乎不值得逐件撕下來;這些問題的答案一般屬於「不這樣做」的範疇。 –

+0

(我的意思是說,在世界上可能使用'讀取[{1..3}] <<< $(echo/opt/CPshrd-R77/bin/cpview history off)''我不能設想一個比'read -aa <<<「/ opt/CPshrd-R77/bin/cpview history off'更正確的場景,即使你*想*將命令中的每個單詞讀入單獨的數組元素......但是爲什麼你需要一個數組也沒有什麼明顯的理由,並且把那個數組中的每個單詞都看作是一個單獨的命令?爲什麼會這麼有用?) –

回答

-1

原來,這是由cpview二進制引起的。我通過運行bash腳本來殺死進程,從而解決了這個問題。