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中的所有语句。这些语句将作为⽗shell脚本进程中的⼀部分运⾏。因此,使⽤source或者"."可以将当前脚本中变量的值或函数的返回值传递⾄⽗脚本中使⽤。
source或者"."点号的功能是在当前shell中执⾏source或者"."点号加载并执⾏的相关脚本⽂件中的命令和语句。
shell脚本返回执行结果⽽不是产⽣⼀个⼦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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。