本文共 2218 字,大约阅读时间需要 7 分钟。
for循环是Shell编程中的基础结构,常用于批量处理任务。理解for循环的语法是掌握Shell编程的关键。
Shell中的for循环有两种形式:
for 变量名 in 列举值 dofor i in `seq 3` do echo $idone
for((exp1;exp2;exp3)) dofor((i=1; i<=3; i++)) do echo $idone
#!/bin/bashRETVAL=0SCRIPTS_PATH="/server/scripts"MAIL_GROUP="3xxxxxx1@qq.com 4xxxxxxx8@qq.com"LOG_FILE="/tmp/web_check.log"function Get_Url_Status() { FAILCOUNT=0 for ((i=1; i<=3; i++)) do wget -T 20 --tries=2 --spider http://${HOST_NAME} > /dev/null 2>&1 if [ $? -ne 0 ]; then let FAILCOUNT+=1 fi done if [ $FAILCOUNT -eq 3 ]; then RETVAL=1 NOW_TIME=`date +"%m-%d %H:%M:%S"` SUBJECT_CONTENT="http://${HOST_NAME} service is error, ${NOW_TIME}." for MAIL_USER in $MAIL_GROUP; do echo "send to :$MAIL_USER ,Title:$SUBJECT_CONTENT" >> $LOG_FILE mail -s "$SUBJECT_CONTENT" $MAIL_USER < $LOG_FILE done else RETVAL=0 fi return $RETVAL}# 定义要检测的网站[ ! -d "$SCRIPTS_PATH" ] && mkdir -p $SCRIPTS_PATH# 检查是否有相关的网站列表[ ! -f "$SCRIPTS_PATH/domain.list" ] && cat > $SCRIPTS_PATH/domain.list < / userchars="test"passfile="/tmp/user.log"for num in `seq 3` do useradd $userchars$num passwd="`echo "date $RANDOM"|md5sum|cut -c3-11`" echo "$passwd" | passwd --stdin $userchars$num echo -e "user:$userchars$num\t_passwd:$passwd" >> $passfile sleep 1doneecho "This is oldboy training class contents"cat $passfile
Shell函数是Shell脚本的灵魂,通过定义函数可以将复杂的操作抽象成可重复利用的模块。
function_name() { # 函数体内的操作 return n} function_name
在开发Shell脚本时,调试是必不可少的环节。以下是一些常用的调试工具和方法。
dos2unix命令处理脚本dos2unix可以将Windows编辑的脚本转换为Linux格式,去除^M符号。
bash命令参数调试sh [-nvx] scripts.sh-n:不执行脚本,只检查语法-v:显示脚本的执行过程-x:显示脚本的内容
变量命名规范
${APACHE_ERR_NUM} 或 ${APACHE_ERR_NUM}函数命名
CreateFile 或 createFilefunction保留字引用符号规范
${APACHE_ERR_NUM}配置规范
/etc目录下环境变量管理
export重新声明环境变量export PATH="/usr/local/bin:$PATH"脚本编写建议
source命令加载脚本source func-1.sh.符号也可以加载脚本通过以上内容,可以看到Shell编程的基本语法和实践技巧。掌握这些知识点是成为一名专业的Shell脚本编写人员的重要基础。
转载地址:http://tqhe.baihongyu.com/