Linux Shell学习笔记九

12.3 Shell脚本中的选项分析

第一种方式,使用case语句手工处理选项。

第二种方式,使用getopts命令分析选项

语法格式:

getopts option-string variable

option-string是包含所有单字符选项的字符串,这些字符就是getopts要进行分析的。

这些选项应该被赋予一个变量,变量variable就是被赋值变量的变量名。

 

getopts对命令行所给出的选项进行分析,分析过程为:

1)getopts选项检查所有命令行参数,找到以"-"字符开头的字符。

2)当找到以"-"字符开头的参数后,将跟在"-"字符后的字符与在option-string中的给出的字符进行比

 

较。

3)若找到匹配,指定的变量variable被设置成选项,否则variable被设置成"?"字符。

4)重复1-3直到遍历完搜索选项

5)当分析完后,getopts返回非零值并推出。

getopts的另一个特征是它可以指出需要额外参数的选项。在option-string中的选项后加上一个":"

字符就可以实现这一功能。在这种情况下,选项被分析后,额外的参数被设置成变量OPTARG的值。

 

使用getopts

while f:o:v OPTION:

do

case "$OPTION" in

f) F=$OPTION ;;

o) O=$OPTION ;;

v) V=$OPTION ;;

*) echo "$USAGE" ;

  exit 1

  ;;

esac

done

 

 

第12学时  输入/输出

当命令产生写向终端的输出时,就称程序将它的输出打印到标准输出(STDOUT)。

出错信息并不写向STDOUT,它们写向一个特殊的类型输出上,该输出称为标准错误输出(STDERR),

它是为出错信息保留的。

 

13.1.1 向终端输出

1)echo

2)printf

 

13.1.2 输出重定向

在Shell脚本中,常常需要俘获命令的输出并将其存入文件。当输出存储在文件中时,可以很方便地对其

 

进行编辑和修改。

重定向操作符 ">","<"

 

">"符号重定向会覆盖原有文件里的数据,使用时需要注意。

如果需要在原有基础上增加数据,可以使用">>"追加数据到文件的尾部。

 

 

向文件和屏幕重定向输出

在某些情况下,需要同时向文件和终端重定向脚本的输出。可使用tee命令。

例如:$ date | tee now

在终端上输出当前日期,并将数据写入文件nowzhong。

 

13.2 输入

1)将输入重定向到文件,从而从文件中读取输入。

2)从用户读取输入。

3)将一个命令的输出重定向到另一个命令的输入。

 

13.2.1 输入重定向

command < file

 

13.2.2 读取用户输入

Shell脚本的常见任务之一就是提示用户输入,然后读取用户的响应。

格式:

read name

它读取用户输入的一整行,直到用户输入回车键为止,它使得该行成为由name所制定变量的值。

例如:

YN=yes

printf "Do you want to play a gane [$YN]?"

read YN

case $YN in

[yY]) echo yes ;;

*) echo "maybe later." ;;

esac

 

13.2.3 管道

UNIX中处理文件的命令大多都能从STDIN中读取输入,这使得用户可以使用一个程序过滤另一个程序的输

 

出。

使用管道可以将一个命令的输出重定向到另一个命令的输入。管道使用可以将几个命令连在一起。

例如:$ who | grep sudo

将who命令的输出作为下一个命令的输入,再进行过滤输出到终端。

 

13.3 文件描述符

标准输入(STDIN)0

标准输出(STDOUT) 1

标准错误(STDERR) 2

 

command 1>file1 2>file2

给定command的STDOUT重定向到file1,STDERR(错误信息)重定向到file2

 

for FILE in $FILES

do

ln -s $FILE ./docs >> /tmp/ln.log 2> /dev/null

这里ln的STDOUT增加到文件/tmp/ln.log中,STDOUT重定向到文件的/dev/null中

 

注意:文件/dev/null是所有UNIX系统中都能使用的用于删除输出的一个reshuffle文件。

你可能感兴趣的:(linux,shell,File,command,脚本,终端)