【问题标题】:Positional Parameters in C-shellC-shell 中的位置参数
【发布时间】:2015-10-29 04:09:33
【问题描述】:

我无法使用以下 shell 命令打印位置参数:echo $1

我将它用作以下两个命令:

% set hi how are you
% echo $1

命令没有任何结果,但hi 应该被打印出来。

【问题讨论】:

  • 您在这里所做的是将 4 个变量设置为空字符串:hihowareyou
  • 我正在尝试设置位置参数 1 = hi, 2= how, 3=are, 4=you.

标签: linux shell csh


【解决方案1】:

在csh中,需要赋值给argv数组:

> set argv=(hi how are you)
> echo $1
hi

说明:

argv 是一个数组变量,其中包含命令行参数列表(第 0 个参数是调用 shell 时的名称,另一个从第 1 个索引开始)。变量$0 - $n 也包含参数的值。所以$argv[1]$1 相同。要分配给数组变量,您可以使用set arr=(value1 value2)set arr[1] = value1

set value1 value2 可以在 bash 中工作,但 csh 与 C 语言类似,因此使用了 argv 数组(如果你不这样做,请阅读一些关于 C 程序命令行参数的信息知道为什么)。

但在csh 中,这:set first second 表示为变量firstsecond 分配一个空(null)值。

【讨论】:

  • 谢谢迈克!!有效。你能解释一下为什么在 csh 中会这样吗?
  • @Jeetesh 我添加了一些解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 2011-05-27
  • 2017-11-20
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多