shell编程中的输入参数处理

shell编程中的输入参数处理

首先来了解一些shell脚本中的特殊参数:
$IFS 输入域分隔符。当shell读取输入时,它给出用来分隔单词的一组字符,它们通常是空格、制表符和换行符。
$# 传递到脚本的参数个数
$* 在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分隔开。如果IFS为空,所有参数将会挤在一块如一个字符串的形式。如果IFS被修改了,那么$*将命令行分隔为参数的方式就将随之改变。
$$ 脚本运行的当前进程I D号
$! 后台运行的最后一个进程的进程I D号
$@ 是$*的一种变体,它不使用IFS环境变量,所以即使IFS为空,参数也不会挤在一起。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
简单的写一个脚本来查看一下几个参数的表现:
#! /bin/bash

echo \$\ #: $#
echo \$\ * : $ *
echo \$\$ : $$
echo \$\ ! : $ !
echo \$\@ : $@
echo \$\ ? : $ ?
然后执行以下这个脚本,执行时传入几个参数:
[root@LovelyLP shell]# ./arg.sh a b c d e
$#: 5
$*: a b c d e
$$: 1591
$!:
$@: a b c d e
$?: 0
通过输出结果,可以对这些特殊参数有一个直观的认识。
 
在此基础上,我们可以编写一些shell脚本或function来简化平时的工作
例如有这样一条命令:
rhc app create -a php1 -t php-5.3 -s -n --no-dns -p password
其中-a后面的参数可能会改变,-s,-n --no-dns选项可能会根据需要决定是否使用,我们可以优化一下命令,编写到.bashrc中,以后通过调用function的方式来使用,提高工作效率:
 
function cphp_app()
{
    cmd = "rhc app create -p $OPENSHIFT_PASSWD -t php-5.3 -a"  # User's command string
     if [ $ # -eq 0 ]; then
        cmd =${cmd} " php1"          # specify a default name if no params are provided
     else
         for i  in $@
         do
             if [ ${i}  ==  "-n" ];  then
                cmd =${cmd} " -n --no-dns"  # make -n short for -n --no -dns
             else
                cmd =${cmd} " ${i}"
             fi
         done
     fi

     # execute command
    eval  ` echo ${cmd} `
}
 
把这样的程序写在~/.bashrc中,source一下后,就能够方便的调用了
总结起来,之所以编写shell脚本,无非是为了提高工作效率,使用perl,ruby等编程语言对于处理这类问题更加出色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值