ksh/bash 运行 来自变量的命令行

ksh/bash run command line from variable

我在 cmd 变量中设置了查找语法:,我使用 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*" )

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

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

然后,计算变量内容:

eval "$cmd"

更新:根据 alvits and Gordon:

更安全的选择
cmd=(find /usr/cti/conf/backup -name "*.tgz*")
${cmd[@]}

两种解决方案——下面提供的一种和 Eugeniu Rosca 发布的一种——似乎对我都有效。

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