Reference
如何获取命令的返回值
在Linux系统下察看状态,键入
$ echo $?
在Windows系统下察看状态,键入
echo %ERRORLEVEL%
获取pipeline 命令的结果
PIPESTATUS is an array that holds the exit status of your last foreground pipeline commands.
echo ${PIPESTATUS[0]}
如何处理文件Scan
bash循环读入文件的每一行并处理
方法一:
#!/bin/bash
while read line
do
echo $line
done < urfile
方法二:
#!/bin/bash
cat urfile | while read line
do
echo $line
done
如何处理输入参数
手工处理方式
参数处理-Shell传入参数的处理
1. $# 传递到脚本的参数个数
2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
3. $$ 脚本运行的当前进程ID号
4. $! 后台运行的最后一个进程的进程ID号
5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
6. $- 显示shell使用的当前选项,与set命令功能相同
7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
变量 含义
$0 脚本名字
$1 位置参数 #1
$2 - $9 位置参数 #2 - #9
${10} 位置参数 #10
$# 位置参数的个数
"$*" 所有的位置参数(作为单个字符串) *
"$@" 所有的位置参数(每个都作为独立的字符串)
${#*} 传递到脚本中的命令行参数的个数
${#@} 传递到脚本中的命令行参数的个数
$? 返回值
$$ 脚本的进程ID(PID)
$- 传递到脚本中的标志(使用set)
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)
getopts/getopt
长选项--xxx
长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,参数可以直接写在--xxx,即--xxx参数
getopt
选项-x
选项,它可需要一个参数,也可不需要参数
getopts
#test.sh
#!/bin/bash
while getopts "a:bc" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
a)
echo "a's arg:$OPTARG" #参数存在$OPTARG中
;;
b)
echo "b"
;;
c)
echo "c"
;;
?) #当有不认识的选项的时候arg为?
echo "unkonw argument"
exit 1
;;
esac
done