shell脚本编程(四)

shell脚本编程(四)

  • 在命令行创建函数:

    1. 将函数定义在一行命令中:function divem {echo $[ $1/$2 ];}在命令行中定义函数时,每条命令的末尾必须包含分号。
    2. 使用多行命令定义函数。这样,bash shell使用次提示符提示输入更多命令。使用这种方法不需要子每条命令的结尾添加分号,只需按ENTER:

      function multem{
      >echo $[ $1*$2 ]
      >}
    3. 使用命令行来创建函数应当十分小心。如果自定义函数与内置命令或其他命令同名,那么这个自定义函数将覆盖原有命令。

  • 在.bashrc文件中定义函数:shell启动时都会在主目录下查找.bashrc文件。为避免麻烦,预先定义函数或库文件:

    • 直接在.bashrc中定义函数
    • 提供函数库文件(可以使用source命令(或称点操作符)将现有库文件的函数包含进.bashrc脚本)
  • 创建菜单函数:创建菜单shell脚本的第一步是确定脚本要执行的函数,并将其作为代码中独立的函数来设计。常见的作坊是为未实现的函数创建桩函数(stub function)

    function test{
    clear
    }
  • 在shell脚本菜单中有助于解决问题的一种做法是将菜单布局本身作为函数来创建。
  • select命令可以从单命令行创建菜单,然后获取输入的答案并自动处理它。

    select variable in list
    do
    commands
    done

    列表参数是用空格隔开的构建菜单的文本项列表。select命令将列表中的每一项显示为一个编号选项,然后为选择显示一个特殊的提示符(由PS3环境变量定义)

 #!/bin/bash
#using select in the menu
function diskspace {
    clear
    df -k
}
function whoseon {
    clear
    who
}
function memusage {
    clear
    cat /proc/meminfo
}
PS3="Enter option :"
select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
do
    case $option in
    "Exit program")
        break;;
    "Display disk space")
        diskspace;;
    "Display logged on users")
        whoseon;;
    "Display memory usage")
        memusage;;
    *)
        clear
        echo "Sorry,wrong selection";;
    esac
done
clear

shell脚本编程–添加颜色

  • 大多数终端模拟软件能够识别设置显示输出格式的ANSI转义码。ANSI转义码以控制序列指示器(control sequence indicator,CSI)开头,后面跟表示要在显示器上执行的操作的数据。CSI告诉终端该数据代表一个转义码。有些ANSI转义码可以用于将光标定位在显示器上的指定位置,擦除部分显示,以及控制显示的格式。要控制显示格式,必须使用选择图形再现(Select Graphic Rendition)转义码。SGR转义码的格式为:CSI【;k】m #该代码中的m代表SGR转义码。n和k参数定义所使用的显示控制。可以仅知道能够一个参数或者同时指定两个,中间用分号隔开。显示控制参数有3类:

    1. 效果控制代码
    2. 前景色控制代码
    3. 背景色控制代码
  • ANSI SGR效果控制代码
代码描述代码描述
0重置为普通模式5
1设置为强亮度6使用快闪烁
2设置为弱亮度7背景、前景色反转
3使用斜体8将前景色设置为背景色
4使用单下划线

CSI3m #使用倾斜的字体
CSI3;5m #将显示设置为斜体和闪烁

  • 前景色控制码和背景色控制码都使用两位数代码。前景色使用3开头的一个两位数的值;而背景色使用4开头的两位数的值。其中第二位数字表示具体颜色.

ANSI颜色控制代码

代码描述代码描述
0黑色4蓝色
1红色5洋红色
2绿色6青色
3黄色7白色

CSI37m #白色前景
CSI47m #白色背景
CSI31;40m #背景黑色,前景设置红色

  • 显示ANSI转义码:CSI字符通常是一个两字符序列。这个序列是ESC ASCII值,后跟作方括号字符。Ctrl-V组合键,后跟Esc键,在输入此组合键时,字符“^[”出现(在使用ANSI转义码的脚本中常常会看到^[字符。看到该字符组合时,记住它是使用Ctrl-V Esc组合键生成的):
  • ANSI颜色控制码会保持有效,直到另一个ANSI颜色控制码改变输出。
  • ANSI转义控制符允许在一个转义序列中指定两个代码,用双引号括起来。

    
    #!/bin/bash
    
    function menu {
    clear
    echo "[34;47;1m"
    echo -e "\t\t\tSys Admin Menu\n"
    echo -e "\t1.Display disk space"
    echo -e "\t2.Display logged on users"
    echo -e "\t3.Display memory usage"
    echo -e "\t0.Exit menu\n\n"
    echo -en "\t\tEnter option: "
    read -n 1 option
    }
    echo "[44;33m"
    while [ 1 ]
    do
    menu
    case $option in
    1) clear;free -h;;
    2) clear;users;;
    3) clear;df -h;;
    0) clear;break;;
    *)clear;echo -e "[5m\t\t\tplease input the number 1-3,or 0>[0m[44;33m";;
    esac
    echo -en "\n\n\t\tHit any key to continue"
    read -n 1 line
    done
    echo "[0m"
    clear
  • 使用ANSI转移控制码创建脚本时必须谨慎。无论何时当终端模拟器遇到控制码,它都会处理。使用cat明林能够对含有ANSI转义控制码的脚本进行列表时,这尤其危险。cat命令将在显示器上回显该代码,然后终端模拟器解释这些代码,并改变显示。在改变很多显示特性的长脚本中,这会是一件十分恼人的事。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值