2016-07-27 28 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脚本来杀死进程,从而解决了这个问题。