跳转到内容

C Shell 脚本/参数

来自维基教科书,开放的书籍,面向开放的世界

将参数传递给脚本

[编辑 | 编辑源代码]

在脚本中,变量$0$1$2等被称为位置参数。变量$0表示命令的名称,$1$2及更大的变量将是传递给脚本的参数。

当调用csh脚本时,特殊变量argv被设置为命令行给出的参数的字列表。因此,作为特殊变量$1$2等的替代方法,csh脚本可以使用$argv[1]$argv[2]等访问命令行参数。变量$#argv的值是给出的参数数量。

例如,编写一个myparams脚本

#!/bin/csh -f
echo The $0 command is called with $#argv parameters
echo   parameter 1 is $1
echo   parameter 2 is $2
echo   parameter 3 is $3
echo   parameter 4 is $4
echo 2nd and on parameters are \"$argv[2-]\" 
echo All Parameters are \"$argv\"
echo All Parameters are \"$argv[*]\"
echo All Parameters are \"$*\"

然后运行命令

./myparams alpha beta omega

这将打印出以下内容

The ./myparams command is called with 3 parameters
parameter 1 is alpha
parameter 2 is beta
parameter 3 is omega
parameter 4 is
All Parameters are "alpha beta omega"
2nd and on parameters are "beta omega"

如果参数丢失,位置参数的值将是一个空字符串,就像第 4 个参数一样。另外,您可以使用变量 $argv 获取整个或部分命令行,它是一个字列表。

如果要在一个参数中包含空格,则必须引用该值。例如,运行以下命令

./myparams "alpha beta" omega

将打印出以下内容

The ./myparams command is called with 2 parameters
parameter 1 is alpha beta
parameter 2 is omega
parameter 3 is
parameter 4 is
All Parameters are "alpha beta omega"
2nd and on parameters are "omega"

现在 alpha 和 beta 值合并成一个单一值。

  1. 传递给脚本的参数可以使用编号变量访问,例如$1$2$3等等。
  2. 传递给脚本的参数也可以使用名为$argv的字列表变量访问。
华夏公益教科书