日期:2014-05-16  浏览次数:20685 次

Linux Shell高级技巧(一)

该系列将重点介绍Linux Shell中的高级使用技巧,其主要面向有一定经验的Shell开发者、Linux系统管理员,以及Linux的爱好者。博客中的示例主要来源于网络和一 些经典书籍,在经过本人的收集和整理之后,以系列博客的形式呈现给诸位。如果大家有更多更好的Shell脚本经典示例,且愿意在这里与我们一同分享的话, 可以以邮件、博客回复等形式与我联系,我将会尽量保证该系列的持续更新。

一、将输入信息转换为大写字符后再进行条件判断:

?? ? ?我们在读取用户的正常输入后,很有可能会将这些输入信息用于条件判断,那么在进行比较时,我们将不得不考虑这些信息的大小写匹配问题。

?? ?? /> cat > test1.sh

?? ?? #!/bin/sh
?? ?? echo -n "Please let me know your name. "
? ? ? read name
?? ?? #将变量name的值通过管道输出到tr命令,再由tr命令进行大小写转换后重新赋值给name变量。
?? ?? name=`echo $name | tr [a-z] [A-Z]`
?? ?? if [[ $name == "STEPHEN" ]]; then
?? ? ???? echo "Hello, Stephen."
?? ?? else
?? ?????? echo "You are not Stephen."
? ? ? fi
? ? ? CTRL+D
? ? ? /> ./test1.sh
?? ?? Please let me know your name. stephen
? ? ? Hello, Stephen.

二、为调试信息设置输出级别:
?? ?
?? ?? 我们经常在调试脚本时添加一些必要的调试信息,以便跟踪到程序中的错误。在完成调试后,一般都会选择删除这些额外的调试信息,在过了一段时间之后,如果脚 本需要添加新的功能,那么我们将不得不重新进行调试,这样又有可能需要添加这些调试信息,在调试成功之后,这些信息可能会被再次删除。如果我们能够为我们 的调试信息添加调试级别,使其只在必要的时候输出,我想这将会是一件非常惬意的事情。
?? ?? /> cat > test2.sh
?? ?? #!/bin/sh
?? ?? if [[ $# == 0 ]]; then
?? ? ? ?? echo "Usage: ./test2.sh -d debug_level"
??? ?? ?? exit 1
? ? ? fi
? ? ? #1. 读取脚本的命令行选项参数,并将选项赋值给变量argument。
? ? ? while getopts d: argument
? ? ? do
?? ? ? ?? #2. 只有到选项为d(-d)时有效,同时将-d后面的参数($OPTARG)赋值给变量debug,表示当前脚本的调试级别。
?? ?? ??? case $argument in
??? ?? ?? d) debug_level=$OPTARG ;;
??? ?? ?? \?) echo "Usage: ./test2.sh -d debug_level"
??? ?? ?????? exit 1
??? ?? ?????? ;;
??? ?? ?? esac
? ? ? done
? ? ? #3. 如果debug此时的值为空或者不是0-9之间的数字,给debug变量赋缺省值0.
?? ?? if [[ -z $debug_level ||? $debug_level != [0-9] ]]; then
? ? ????? debug_level=0
? ? ? fi
? ? ? echo "The current debug_level level is $debug_level."
?? ?? echo -n "Tell me your name."
? ? ? read name
? ? ? name=`echo $name | tr [a-z] [A-Z]`

友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:491人  网站在1时14分53秒内访问总人数:13860人 当前 28.69%  粤ICP备18100884号-2