Shell脚本编程的一些小风格

来源:互联网 发布:linux 创建多级文件夹 编辑:程序博客网 时间:2024/05/19 03:27

Shell虽然是脚本语言,但我们也不能忽略其优雅的编程风格,下面是一些小的书写习惯。

  • 将命令或命令组合设为一个见名知意的别名,在一个Shell环境中可以被多次调用,同时,利于代码的清晰度,也便于代码的阅读。 通常封装在一个库文件中,比如:demo.lib
#! /bin/shalias LOCAL='local'alias GLOBAL=''alias OPEN_DEBUG='set -x'alias CLOSE_DEBUG='set +x'alias GET_IP_FQDN='nslookup ${IP_ADDRESS} | tail -n 2 | sed -e "$d" | awk -F[=] "{print \$NF}" | sed -e "s/^\s*//" -e "s/\.$//"'
  • 将属性键值对,配置在文件中,供Shell读取,以此达到配置与代码的剥离,也避免程序的硬编码,比如:info.conf

NAME="Zhou Shengshuai"COMPANY="ZSS"

如何执行lib中的alias呢? 又如何读取info.conf中的属性值呢?下面的demo.sh一目了然。
#! /bin/sh# 在当前进程中,Source参数文件demo.lib中的各个命令source demo.lib# 全局变量IP_ADDRESS,在当前Shell环境中,可以被demo.lib共享,即:IP_ADDRESS可以在demo.lib被使用GLOBAL IP_ADDRESS="10.91.86.250"# 执行当前Shell环境中的命令,即:demo.lib中的GET_IP_FQDNGLOBAL IP_FQDN=`GET_IP_FQDN`echo "IP FQDN: ${IP_FQDN}"# 执行当前Shell环境中的命令,即:demo.lib中的OPEN_DEBUGOPEN_DEBUG# 在当前进程中,读取参数文件info.conf中的各个属性值CONF_FILE="info.conf"[ -e ${CONF_FILE} ] && source ${CONF_FILE}echo "NAME: $NAME"echo "COMPANY: $COMPANY"function test1{    # 局部变量,生存周期在函数体内    LOCAL v1=100}test1echo "local variable: $v1"function test2{# 全局变量,生存周期从函数调用开始被Shell环境共享GLOBAL v2=200}test2echo "global variable: $v2"# 执行当前Shell环境中的命令,即:demo.lib中的CLOSE_DEBUGCLOSE_DEBUG# 将整个EOF"内容段"作为命令输入cat >output.txt << EOFABCDEFGHIJKLMNOPQRSTUVWXYZEOF


0 0
原创粉丝点击