shell学习第二章shell脚本初步入门

4 篇文章 0 订阅

shell学习第二章shell脚本初步入门

没有第一章,第一章被我吃了。



Shell编程范例2-3:

写一个包含命令变量和流程控制的语句来清楚/var/log/message日志文件的shell脚本。

#!/bin/bash
LOG_DIR=/var/log
ROOT_UID=0
if [ $UID -ne $ROOT_UID ];then
	echo "Must be root to run this script."
	exit 1
fi
cd $LOG_DIR || {
	echo "Cannot change to necessarg directory."
	exit 1
}
cat /dev/null>messages && {
	echo "Logs cleaned up."
	exit 0
}
echo "Logs cleaned up fail."
exit 1

范例2-3流程图:
在这里插入图片描述

1. 查看系统的bash版本

cat /etc/redhat-release

2. 检查是否为最新版本bash

env x='() { :; echo be careful}' bash -c "echo this is a test"
be careful
this is a test
#不是最新打印两行

建议为新版本bash打上补丁

yum -y update bash
rpm -qa bash

3. Linux脚本中常用的开头写法

#!/bin/sh
#!/bin/bash
#!/usr/bin/awk
#!/bin/sed
#!/usr/bin/tcl
#!/usr/bin/except 	#<==except语言
#!/usr/bin/perl		#<==perl语言
#!/usr/bin/env python	#<==python语言

#脚本多注释

4. 脚本的执行

当shell脚本运行时,它会先查找系统环境变量ENV。该环境变量指定了系统文件,加载顺序通常是/etc/profile, ~/.bash_profile, ~/.bashrc, /etc/bashrc等,加载了上述变量文件就开始运行shell内容。

shell是从上到下,从左到右执行,遇到脚本嵌套(子脚本),先执行子脚本内容。完成后返回父脚本继续执行后面内容。通常情况下,执行shell脚本时,会向系统内核请求启动一个新的进程,以便在该进程中执行脚本的命令及子shell语句。

特殊技巧:Linux执行crond时,最好在定时任务脚本中重新定义系统环境变量,否则一些系统环境变量不会加载。

执行bash的4种方式

1. bash script-name & sh script-name
2. path/script-name & ./script-name
3. sourcescript-name & . script-name
#1和3的区别,1的方式变量定义后为空
cat testsource.sh
userdir=`pwd`
sh testsource.sh
echo $userdir
		#<==空
#3的方式变量定义会保留
source testsource.sh
echo $userdir
		#<==空
4. sh<script-name & cat script-name|bash
cat oldboy.sh
echo "I am oldboy teacher."
sh<oldboy.sh
cat oldboy.sh|bash

5. shell脚本开发的基本规范及习惯

1. 基本规范

  • 第一行是代码解释器。
  • 脚本开头会加版本和版权等信息。可修改~/.vimec配合文件配置vim自动加上信息的功能。
  • 设置字符集:export LANG=“zh_CN.UTF-8”
  • shell脚本扩展以.sh结尾。
  • 放在固定的脚本路径。例如:/server/scripts

2. 良好习惯

  • 成对的符号一次性写出。
  • 中括号两端要用空格。
  • 流程控制语句一次写完。
  • 通过缩进使得代码易读。
  • 常规变量的字符串定义值应加双引号,并且等号两边不能有空格。需要强引用的(所见即所得),用单引号。命令的引用用反引号。
  • 单双反引号都要是英文字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值