parse.tcsh

来自「gsac程序包」· TCSH 代码 · 共 78 行

TCSH
78
字号
#!/bin/tcsh# A small example program for using the new getopt(1) program.# This program will only work with tcsh(1)# An similar program using the bash(1) script language can be found# as parse.bash# Example input and output (from the tcsh prompt):# ./parse.tcsh -a par1 'another arg' --c-long 'wow\!*\?' -cmore -b " very long "# Option a# Option c, no argument# Option c, argument `more'# Option b, argument ` very long '# Remaining arguments:# --> `par1'# --> `another arg'# --> `wow!*\?'# Note that we had to escape the exclamation mark in the wow-argument. This# is _not_ a problem with getopt, but with the tcsh command parsing. If you# would give the same line from the bash prompt (ie. call ./parse.tcsh),# you could remove the exclamation mark.# This is a bit tricky. We use a temp variable, to be able to check the# return value of getopt (eval nukes it). argv contains the command arguments# as a list. The ':q`  copies that list without doing any substitutions:# each element of argv becomes a separate argument for getopt. The braces# are needed because the result is also a list.set temp=(`getopt -s tcsh -o ab:c:: --long a-long,b-long:,c-long:: -- $argv:q`)if ($? != 0) then   echo "Terminating..." >/dev/stderr  exit 1endif# Now we do the eval part. As the result is a list, we need braces. But they# must be quoted, because they must be evaluated when the eval is called.# The 'q` stops doing any silly substitutions.eval set argv=\($temp:q\)while (1)	switch($1:q)	case -a:	case --a-long:		echo "Option a" ; shift 		breaksw;	case -b:	case --b-long:		echo "Option b, argument "\`$2:q\' ; shift ; shift		breaksw	case -c:	case --c-long:		# c has an optional argument. As we are in quoted mode,		# an empty parameter will be generated if its optional		# argument is not found.		if ($2:q == "") then			echo "Option c, no argument"		else			echo "Option c, argument "\`$2:q\'		endif		shift; shift		breaksw	case --:		shift		break	default:		echo "Internal error!" ; exit 1	endswendecho "Remaining arguments:"# foreach el ($argv:q) created problems for some tcsh-versions (at least# 6.02). So we use another shift-loop here:while ($#argv > 0)	echo '--> '\`$1:q\'	shiftend

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?