脚本内的KSH88变量

时间:2018-08-03 08:01:45

标签: bash shell solaris ksh

我在使用KSH88时遇到问题

script="find . ! \( "$result" \) -mtime "$older" -xdev -type f -size +"$minsize"M -exec ls -lh {} \; | head -100 | awk '{print \$8}' | sort -rn"

files_to_delete=`$script`

当我回显我的files_to_delete变量时,我得到:

find . ! \( -name '*.jar' -o -name '*.zip' -o -name '*.rar' -o -name '*.log' -o -name '*.xml' \) -mtime 10 -xdev -type f -size +100M -exec ls -lh {} \; | head -100 | awk '{print $8}' | sort -rn

这就是我想要的,当我在命令行上执行它时它可以工作,但是当我在KSH中执行它时,我得到了

find: bad option \(
find: [-H | -L] path-list predicate-list

1 个答案:

答案 0 :(得分:1)

将“ eval”放在“ $ script”前面,这样就变成

  files_to_delete=`eval $script`

这将强制外壳程序评估命令字符串。

如果您的外壳支持它,则最好使用files_to_delete=$(eval $script)。快速扫描脚本时,容易遗漏`版本,而且更难嵌套(命令中的命令)。