在tcshell中传递部分参数

时间:2010-05-08 14:16:01

标签: unix parameters shell tcsh

我正在编写一个应该接收3个或更多参数的shell脚本(tcsh)。前三个将被传递给一个程序,其余的应该被传递给另一个程序。总而言之,脚本应该类似于:

./first_program $1 $2 $3
./second program [fourth or more]

问题是我不知道如何做后者 - 传递第三个之后的所有参数。

2 个答案:

答案 0 :(得分:2)

我向您展示shift命令:

  

shift [变量]
  如果没有参数,则丢弃argv[1]并将argv的成员转移到左侧。

示例:

$ cat /tmp/tcsh.sh
#!/bin/tcsh

echo "$1" "$2" "$3"
shift
shift
shift
echo "$*"
$ /tmp/tcsh.sh 1 2 3 4 5 6
1 2 3
4 5 6

答案 1 :(得分:1)

您可以按如下方式使用shift

./first_program $1 $2 $3

shift # shift 3 times to remove the first 3 parameters.
shift
shift

./second program $* 

$*将包含其余参数。

通过检查shift并确保其为非零,您还必须在执行$#argv之前执行错误检查。或者,您可以检查脚本星号上$#argv的值,并确保它至少为3

相关问题