上海正规网站建设怎么样,百度成都总部,外包公司有哪些,靖江网站Shell编程中Shift的用法 位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1#xff0c;原来的$5现在变成$2等等#xff0c;原来的$1,$2, 3 , 3, 3,-丢弃#xff0c;$ 0 不移动。不带参数的shift命令相当于shift 1。 非常有用的 Unix 命令:shift。我们知道原来的$5现在变成$2等等原来的$1,$2, 3 , 3, 3,-丢弃$ 0 不移动。不带参数的shift命令相当于shift 1。 非常有用的 Unix 命令:shift。我们知道对于位置变量或命令行参数其个数必须是确定的或者当 Shell 程序不知道其个数时可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下还能逐个的把参数一一处理也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。 #测试 shift 命令(x_shift.sh)until [ $# -eq 0 ]doecho 第一个参数为: $1 参数个数为: $#shiftdone执行以上程序x_shift.sh$./x_shift.sh 1 2 3 4结果显示如下第一个参数为: 1 参数个数为: 4第一个参数为: 2 参数个数为: 3第一个参数为: 3 参数个数为: 2第一个参数为: 4 参数个数为: 1从上可知 shift 命令每执行一次变量的个数($#)减一而变量值提前一位下面代码用 until 和 shift 命令计算所有命令行参数的和。 shift 上档命令的应用(x_shift2.sh)
if [ $# -eq 0 ]
then
echo Usage:x_shift2.sh 参数
exit 1
fi
sum0
until [ $# -eq 0 ]
do
sumexpr $sum $1
shift
done
echo sum is: $sum
执行上述程序:
$x_shift2.sh 10 20 15
其显示结果为45Shift 命令还有另外一个重要用途, Bsh 定义了9个位置变量从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数借助 shift 命令可以访问多于9个的参数。Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后可以使用 shift 9 命令把 $10 移到 $1。 实际应用
while :
do[ -z $1 ] break;case $1 in-a ) NEED_NFSy NEED_HTTPy YUM_ONLINE_REPOy;shift;;-c ) ONLY_UPGRADE_CTLy UPGRADEy;shift;;# shift 2 代表后面的参数前移2位, 比如a,b,c前移之后变成 c-C ) check_myarg $1 $2;CONSOLE_PROXY_ADDRESS$2;shift 2;;-d ) DEBUGy;shift;;-D ) NEED_DROP_DBy;shift;;-E ) INSTALL_ENTERPRISEy;shift;;-H ) check_myarg $1 $2;NEED_HTTPy HTTP_FOLDER$2;shift 2;;-f ) check_myarg $1 $2;ZSTACK_ALL_IN_ONE$2;shift 2;;-F ) FORCEy;shift;;-i ) ONLY_INSTALL_ZSTACKy NEED_NFS NEED_HTTP ;shift;;-I ) check_myarg $1 $2;MANAGEMENT_INTERFACE$2 NEED_SET_MN_IPy;shift 2;;-k ) NEED_KEEP_DBy;shift;;-l ) ONLY_INSTALL_LIBSy;shift;;-L ) check_myarg $1 $2;LICENSE_PATH$2;shift 2;;-m ) INSTALL_MONITORy;shift;;-M ) UPGRADE_MONITORy;shift;;-n ) check_myarg $1 $2;NEED_NFSy NFS_FOLDER$2;shift 2;;# -o: do not use yum online repo-o ) YUM_ONLINE_REPO ZSTACK_OFFLINE_INSTALLy [ zstack.org $WEBSITE ] WEBSITElocalhost;shift;;# -O: use yum online repo-O ) if [ x${CHECK_REPO_VERSION} ! xTrue ]; thenYUM_ONLINE_REPOyZSTACK_OFFLINE_INSTALLelsefail2 $PRODUCT_NAME dont support -O option! Please remove -O and try again.fi;shift;;-P ) check_myarg $1 $2;MYSQL_ROOT_PASSWORD$2 MYSQL_NEW_ROOT_PASSWORD$2;shift 2;;-p ) check_myarg $1 $2;MYSQL_USER_PASSWORD$2;shift 2;;-q ) QUIET_INSTALLATIONy;shift;;-r ) check_myarg $1 $2;ZSTACK_INSTALL_ROOT$2;shift 2;;# -R: use yum third party repo-R ) check_myarg $1 $2;if [ x${CHECK_REPO_VERSION} ! xTrue ]; thenZSTACK_PKG_MIRROR$2YUM_ONLINE_REPOyZSTACK_OFFLINE_INSTALLelsefail2 $PRODUCT_NAME dont support -R option! Please remove -R and try again.fi;shift 2;;# -s: skip syncing from repo.zstack.io-s ) SKIP_SYNCy;shift;;-t ) check_myarg $1 $2;ZSTACK_START_TIMEOUT$2;shift 2;;-T ) check_myarg $1 $2;MYSQL_PORT$2;shift 2;;-u ) UPGRADEy;shift;;-y ) check_myarg $1 $2;HTTP_PROXY$2;shift 2;;-z ) NOT_START_ZSTACKy;shift;;--mini) MINI_INSTALLy;shift;;--SY) SANYUAN_INSTALLy;shift;;--sds) SDS_INSTALLy;shift;;--) shift;;* ) usage;;esac
done