【发布时间】:2013-12-24 06:25:05
【问题描述】:
#!/bin/csh
set passFail_file = "name"
set numErrs = `/bin/grep -c ERROR $passFail_file`
echo "numErrs is $numErrs" # displays numErrs is 0, which isn't always correct
set dirLocale = `/bin/sed q $passFail_file` #capture line 1 in file, which is nonBlank
echo "dirLocale is $dirLocale" # displays: dirLocale is
当我运行上述脚本时,我无法分配 dirLocale。 csh中是否有等效的eval?语法是什么?我想我错过了反引号和操作顺序的组合。
【问题讨论】:
-
#!/bin/csh应该是#!/bin/csh -f。是的,csh 有eval。请注意,在某些 csh 版本中存在一个已知错误,至少在 Ubuntu 上是这样。见bugs.launchpad.net/ubuntu/+source/csh/+bug/1739505。有了这个错误,eval总是(我认为)死于分段错误。此错误不会影响 tcsh。 -
该错误是由 Debian 特定的 csh 补丁 (bsd-csh) 引起的,因此它可能会在任何基于 Debian 的系统上与 csh 一起出现。 (
/bin/csh可以是 bsd-csh 或 tcsh;tcsh 不受影响。)