Shell脚本编程的一些小风格

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

  • 将命令或命令组合设为一个见名知意的别名,在一个Shell环境中可以被多次调用,同时,利于代码的清晰度,也便于代码的阅读。 通常封装在一个库文件中,比如:demo.lib
#! /bin/sh

alias 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_FQDN
GLOBAL IP_FQDN=`GET_IP_FQDN`
echo "IP FQDN: ${IP_FQDN}"

# 执行当前Shell环境中的命令,即:demo.lib中的OPEN_DEBUG
OPEN_DEBUG

# 在当前进程中,读取参数文件info.conf中的各个属性值
CONF_FILE="info.conf"
[ -e ${CONF_FILE} ] && source ${CONF_FILE}
echo "NAME: $NAME"
echo "COMPANY: $COMPANY"

function test1{
    # 局部变量,生存周期在函数体内
    LOCAL v1=100
}

test1
echo "local variable: $v1"

function test2
{
	# 全局变量,生存周期从函数调用开始被Shell环境共享
	GLOBAL v2=200
}

test2
echo "global variable: $v2"

# 执行当前Shell环境中的命令,即:demo.lib中的CLOSE_DEBUG
CLOSE_DEBUG

# 将整个EOF"内容段"作为命令输入
cat >output.txt << EOF
ABCDEFGHIJKLMNOPQRSTUVWXYZ
EOF


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值