首页 » shell » 编写Linux Shell脚本开发的最佳实践经验总结

编写Linux Shell脚本开发的最佳实践经验总结

 

一.导读
今天写这篇文章起标题时有点纠结,因为多多少少会跟现在一些技术文章标题发生冲突,其实并不是想蹭热度,只是想写一系列文章,希望能有个好的开始。近阶段工作会跟shell接触,少部分工作主要负责shell review这块。在review过程中,发现了大家在写代码有不同的问题和技术点需要解决。想到这样的话,趁热总结一下,好让大家少走写弯路。文章的篇幅主要以解决技术问题痛点为主,少量篇幅理论为主。而且会保持本文不定期的更新。
二.要点解析
1.问题:shell里面如果需要传10个以上的参数,变量不识别的解决方案。
解决方案:函数方法封装的话,理论上尽量传的参数越少越好,但是往往需要定义更多的变量来解决实际的问题。所以如果遇到这样的问题的话,需要在后续的参数上加上花括号

$1 $2 $3 $4 $6 $7 $8 $9 ${10} ${11}

2.问题:获取shell脚本中自身的文件名及文件路径的解决方案。
解决方案:例如shell路径为【/opt/shell/xiangquba.sh】
想要获取自身文件名【xiangquba.sh】

#echo $(basename $0)

获取自身文件路径【/opt/shell/】

#echo $(cd `dirname $0`;pwd)

备注:
(1).【dirname $0】取得当前执行的脚本文件的父目录。
(2).【cd `dirname $0`】进入这个目录。
(3).【pwd】显示当前工作目录。
3.问题:shell里获取当前用户名的解决方案。
解决方案:

#echo $(whoami)
#echo ${LOGNAME} 
#echo "$USER"

4.问题:shell里验证oracle用户名密码是否正确,DB是否成功连接解决方案。
解决方案:

#echo show user | $ORACLE_HOME/bin/sqlplus -s | grep -i 'USER ' | wc -l

备注:
(1).【$ORACLE_HOME】为oracle所在目录的环境变量。
(2).正确结果返回1,错误结果返回非1的任意数字,我这里测试是返回2。
5.问题:shell里怎样获取上一个echo输出的结果到一个变量解决方案。
解决方案:比如上一个echo输出的结果为【hello xiangquba】,我们想将这个输出结果定义到一个变量里来进行我们业务计算,而不想将输出的结果生成文件,然后在解析文件。这里我们定义一个变量来接收echo的值。

#! /bin/bash
myvar=$(echo "hello xiangquba")
echo $myvar

执行结果:

hello xiangquba

原文链接:编写Linux Shell脚本开发的最佳实践经验总结,转载请注明来源!

0