如何在csh脚本中分配变量并将它们用作同一脚本的参数?

问题描述 投票:1回答:2

美好的一天,

希望得到任何人的亲切帮助,在此先感谢。我有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>

如果我手动设置变量,那没关系,但是当我从脚本调用它时,它标记的未定义变量错误。

麦克风

unix set printf echo csh
2个回答
0
投票
prompt> unset a
prompt> ./T.csh 4773 XXXX.XX "$a"

第一个命令“unset a”删除变量。在第二个命令中,您尝试读取变量(在命令行上!)。这就是为什么csh抱怨。


0
投票

我发布了另一个答案,因为评论太短了。请看以下内容。

我有一个名为/tmp/T.csh的脚本:

#!/bin/csh
set a="blah"
echo $a
  1. 我的外壳是bash;我键入/tmp/T.csh:结果是blah(csh执行脚本)。
  2. 仍在bash;我输入unset a; /tmp/T.csh $a:结果是一样的。
  3. 仍在bash;我输入. /tmp/T.csh:没有结果(bash执行了脚本)。
  4. 我输入csh;现在我在csh。
  5. 我输入/tmp/T.csh:结果是blah(当然)。
  6. 我输入/tmp/T.csh $a:“a:未定义的变量”
  7. set a = something
  8. /tmp/T.csh $a:等等
  9. echo $a:东西
  10. unset a
  11. echo $a:“a:未定义的变量”

我复制了你所做的一切;希望这可以帮助。您在命令行上编写的内容出错,而不是脚本内容出错。如上所示,即使是一个简单的echo,如果你在命令行上引用一个不存在的变量,也会出错。

© www.soinside.com 2019 - 2024. All rights reserved.