Shell脚本特点说明以及案例解析

一、shell的说明

shell是一种弱类型语言(在声明变量之前不需要对其类型进行定义),较为 通用的有Bourne shell(sh)和c shell(csh)。其中Bourne shell(sh)已经被bash shell取代。

1、shell的种类

Bourne shell (ksh、sh、bash)
c shell(csh、tcsh)

2、shell相对perl、php、python的特点

shell的优势在于处理操作系统的业务(大量的命令为它做支撑,2000多个命令都是shell的支撑)
一键安装、报警脚本、常规的业务应用,shell开发会更简单。
php、python优势在于开发运维工具,web界面的管理工具。

3、shell脚本的执行

当shell脚本以非交互式的方式运行时,首先会查找环境变量ENV,该变量指定了一个环境文件(通常是.bahsrc)
,然后从该环境变量文件开始执行,当读取了 该文件之后,SHELL才开始执行脚本中的内容。

shell脚本的执行通常可以采用以下三种形式:

(1)bash script-name 或 sh script-name (推荐使用)
(2)path/script-name 或 ./script-name(当前路径下执行脚本)
(3)source script-name 或 . script-name (注意“.”号)

执行说明:
第一种方法是当脚本没有可执行权限时或者脚本开头没有指定解释器,所使用的方法。
第二种需要先将脚本的权限改为可执行。然后就可通过路径直接执行了
第三种通常使用source 或者 “.”点号读入或加载指定的shell脚本文件(son.sh),然后依次执行son.sh中的所有语句。这些语句将作为父shell脚本进程中的一部分运行。因此,使用source或者"."可以将当前脚本中变量的值或函数的返回值传递至父脚本中使用。

source或者"."点号的功能是在当前shell中执行source或者"."点号加载并执行的相关脚本文件中的命令和语句。
而不是产生一个子shell来执行命令文件中的命令。

在这里插入图片描述
该答案为空
这里没有使用source或者"."所以上面脚本文件中的变量无法加载至当前shell中,所以为空

二、清除系统日志

1.清除/var/log 下的 message日志文件简单命令脚本

cd /var/log
cat /dev/null  >   message
echo " Logs cleaned up"

此脚本虽然可以实现逻辑功能,但是存在不足。

1、不是root用户无法执行。
2、没有流程控制,即没有逻辑性。

改良后的脚本如下:

#!/bin/bash
LOG_DIR=/var/log
ROOT_UID=0

if ["$UID"  -ne "$ROOT_UID"]
then
	echo "you must be root can run  this script!"
	exit 1
fi
cd $LOG_DIR || {
	echo " cannot change the necessary directory."
	exit1
	}
cat   /dev/null  > message 
echo "Logs  cleande  up."
exit 0

在此补充三种清空日志的方法

1 > /var/log/message
2 cat  /dev/null  > /var/log/message
3 echo > /var/log/message 

猜你喜欢

转载自blog.csdn.net/weixin_41476978/article/details/86654508