ksh / bash从变量运行命令行

时间:2015-06-25 08:48:50

标签: linux bash ksh

我在cmd变量中设置了find语法:,我使用ksh shell / bash

 # cmd=" find /usr/cti/conf -name \"*.tgz*\" "
 # echo $cmd
   find /usr/cti/conf/ -name "*.tgz*"

那么为什么当我想运行cmd时,我实际上没有激活查找...

 # exec $cmd
  appserver1a:/var/tmp/    ROOT #     ( this exit from the shell )

当我使用双括号

时,它也不起作用
  exec "$cmd"
  ksh:  find /usr/cti/conf/backup -name "*.tgz*" :  not found

这是什么决议?

备注我不想像这样设置cmd(这是有效的)

     cmd=`  find /usr/cti/conf/backup -name "*.tgz*"  `

      cmd=$( find /usr/cti/conf/backup -name "*.tgz*" )

2 个答案:

答案 0 :(得分:1)

将命令字符串存储在变量中:

cmd="find /usr/cti/conf/backup -name \"*.tgz*\""

然后,评估变量内容:

eval "$cmd"

更新:更安全的选项,根据alvitsGordon

cmd=(find /usr/cti/conf/backup -name "*.tgz*")
${cmd[@]}

答案 1 :(得分:0)

下面提供的解决方案和Eugeniu Rosca发布的解决方案似乎对我有用。

cmd="find /usr/cti/conf/backup -name \"*.tgz*\""
exec $cmd