shell 取脚本 参数

  刚开始接触shel脚本,感觉语法很恶心,很容易出错(没有python那么容易写),不过用shell相关的命令的时候觉得很爽,

感觉功能很强大,总的来说,有时候用shell 还是很理想的方式,因为你要做这件事情,他是最方便的。这里介绍一些执行脚本得到参数的方式。我也是初学,总结一下。望大家补充!

 

1. 最简单的方式

 通过下面的代码大家应该就都明白了,如果不明白的话, 建议去看书吧。

 

#test1.sh

#!/bin/bash

if [ "$#" -lt 3 ] #判断一下参数的个数对不对
 then
       echo "need args"
       exit
fi

#输出第一个参数
echo $1
#输出第一个参数
echo $2
#输出第一个参数
echo $3

 

2.while +case 判断参数

 

while [ $# -gt 0 ]; do
    case $1 in
        -h|--help)
            print_help
            exit 0
            ;;  
        -V|--version)
            print_version
            exit 0
            ;;  
        -l|--listen)
            listening_address=$2
            shift 2
            ;;  
        -p|--port)
            lipo=$2
            shift 2
            ;;  
        -P|--protocol)
            proto=$2
            shift 2
            ;;  
        -v|--verbose)
            verbose=true
            shift
            ;;  
        --)
            shift
            break
            ;;
        *)
            echo "Internal Error: option processing error: $1" 1>&2
            exit 1
            ;;
    esac
done

 

 

 3.循环读取参数

 

从文件中读取数据
参数LINE表示行的内容,$file_name表示文件名称,该循环读取文件效率是非常高的,和cat相当。

有了上面的方法我们就可以对文件逐行操作,可以编写配置参数文件。

 

 

while read LINE

do
echo $LINE
done<$file_name
 

另一种:

list="aa bb cc dd"

set -- `echo $list`
for((i=1;i<5;i++))
do
echo $1
shift
done
 

      4.getopts 方式

 

经常用ls -al 等命令,如果想自己弄一个的话,getopts命令很好用

     例:#newdate 

if [ $# -lt 1 ] 
then 
date 
else 
while getopts mdyDHMSTjJwahr OPTION 
do 
case $OPTION 
in 
m) date '+%m ';; # Month of Year 
d) date '+%d ';; # Day of Month 
y) date '+%y ';; # Year 
D) date '+%D ';; # MM/DD/YY 
H) date '+%H ';; # Hour 
M) date '+%M ';; # Minute 
S) date '+%S ';; # Second 
T) date '+%T ';; # HH:MM:SS 
j) date '+%j ';; # day of year 
J) date '+%y%j ';;# 5 digit Julian date 
w) date '+%w ';; # Day of the Week 
a) date '+%a ';; # Day abbreviation 
h) date '+%h ';; # Month abbreviation 
r) date '+%r ';; # AM-PM time 
\?) echo "Invalid option $OPTION";; 
esac 
done 
fi 

    5. 循环遍历所有的参数

   for i in $@

do
echo $i
done

 

 

最后附上一篇挺全的文章:http://www.cnblogs.com/steven_oyj/archive/2010/06/01/1749007.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值