美好的一天,
希望得到任何人的亲切帮助,提前谢谢。 我有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>
如果我手动设置变量,那没关系,但是当我从脚本调用它时,它标记了未定义的变量错误。
麦克
答案 0 :(得分:0)
prompt> unset a
prompt> ./T.csh 4773 XXXX.XX "$a"
第一个命令“unset a”删除变量。在第二个命令中,您尝试读取变量(在命令行上!)。这就是为什么csh抱怨。
答案 1 :(得分:0)
我发布了另一个答案,因为评论太短了。请看以下内容。
我有一个名为/tmp/T.csh的脚本:
#!/bin/csh
set a="blah"
echo $a
/tmp/T.csh
:结果为blah
(csh执行脚本)。unset a; /tmp/T.csh $a
:结果是一样的。. /tmp/T.csh
:没有结果(bash执行了脚本)。csh
;现在我在csh。/tmp/T.csh
:结果为blah
(当然)。/tmp/T.csh $a
:" a:未定义的变量" set a = something
/tmp/T.csh $a
:blah echo $a
:某事unset a
echo $a
:" a:未定义的变量" 我复制了你所做的一切;希望这可以帮助。
您在命令行上编写的内容时出错,而不是脚本内容。如上所示,即使是简单的echo
,如果您在命令行中引用了一个不存在的变量,也会出现错误。