【发布时间】:2017-06-16 08:57:57
【问题描述】:
早安,
希望在此得到任何人的帮助,在此先感谢。 我有 T.csh,它看起来像这样:
#! /bin/csh
set a="01 02 03 04 05 06 07 08 09 10 11 12 13"
set b="14 15 16 17 18 19 20 21 22 23 24 25"
set c="01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25"
set X = `grep $1 EOL.txt | head -n1 | cut -d- -f1`
printf "$X\n$2\n$3\nYYYY\n1\nN\n"
变量 a、b 和 c 可选地用作 printf 行中的第三个参数。问题是,每当我尝试运行脚本时,它都会显示未定义的变量。每当我以交互方式分配这些命令行时,它们就可以工作,但在脚本内部,它似乎不起作用。也许我需要初始化它,但不知道怎么做。刚接触这个编程的东西,我希望这里有人可以帮助我。提前非常感谢。
以下是示例执行和错误供您参考:
CAT-46{bc2}40>set a="01 02 03 04 05 06 07 08 09 10 11 12 13"
CAT-46{bc2}41>./T.csh 4773 XXXX.XX "$a"
62
XXXX.XX
01 02 03 04 05 06 07 08 09 10 11 12 13
82869
1
N
CAT-46{bc2}42>unset a
CAT-46{bc2}43>./T.csh 4773 XXXX.XX "$a"
a: Undefined variable
CAT-46{bc2}44>
如果我手动设置变量,没关系,但是当我从脚本中调用它时,它的标记未定义变量错误。
迈克
【问题讨论】:
-
将您看到的确切错误粘贴到您的问题中。
-
AND 显示包含 $a、$b、$c 的用法。根据昨天对 csh 的另一个 Q,我相信 csh 会阻塞变量赋值中的空格。 (即使它们被引用)。因此,在花费大量时间之前,请确保您可以简单地使用其中一个变量(其中包含空格)。请参阅 grymoire.com/unix/csh.html 以获得合理的 csh 教程和讨论为什么您可能想要使用
bash如果可以的话。祝你好运。