0

我有一个执行以下操作的小脚本。我已经为这个例子简化了它。

set logfile=$HOME/LOG/output.log
find execute.sh -type f -exec csh -c '"$1" >& "$logfile" &' {} \;

问题是 find 命令没有扩展$logfile值。相反,它给了我一个错误

logfile: Undefined variable.

我对 csh 不是很熟悉,也有很长一段时间没有编写脚本,但是是否有可能逃避这一点或以其他方式访问命令中的值?

4

2 回答 2

1

logfile不是环境变量,所以它在主启动的 shell 中不存在-exec。您可以使用setenv

setenv logfile "$HOME/LOG/output.log"

或更改引号,以便$logfile在将命令传递给csh. 不过,我不清楚$1应该如何设置。

于 2013-09-27T16:32:57.683 回答
0

[我知道这个问题有多老了,但它仍然在搜索的早期出现] 在普通的 C-shell(/bin/csh,以及限制语法匹配的模拟器)中,变量设置必须用空格分隔,因此

set logfile = $HOME/LOG/output.log

在 Tcsh 中,空格是可选的。如果您的脚本是为严格的 C-shell 兼容性而编写的,那么您的第一行最终会将一个相当特殊的变量设置为空字符串:在我的 Mac 上,它应该是logfile=/Users/kelsey/LOG/output.log= ""。

于 2020-07-19T19:47:41.773 回答