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

Mik*_*ike 6 unix printf csh set echo

再会,

希望这里得到任何人的帮助,提前致谢。我有 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"
Run Code Online (Sandbox Code Playgroud)

变量 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>
Run Code Online (Sandbox Code Playgroud)

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

麦克风

lin*_*fan 0

prompt> unset a
prompt> ./T.csh 4773 XXXX.XX "$a"
Run Code Online (Sandbox Code Playgroud)

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