刚开始接触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