您的位置:首页 > 运维架构 > Shell

第34周-鸟哥的Linux私房菜基础篇第三版- 第十三章、Shell Scripts

2016-11-17 21:45 162 查看
1、Linux系统的启动接口在/etc/init.d/目录下,目录下的所有档案都是scripts.

   重新启动系统注册表档:/etc/init.d/syslogd restart    其中syslogd就是script

2、简单入侵检测功能:

      系统注册表档案,记录系统的异状,可用抵挡砍站软件的shell script

3、撰写程序要点:

         a、必须以#!/bin/bash 开头,其中的bash表示用bash的语法,它可自行加载相关环境配置文件(~/.bashrc);

         b、写“功能,版本信息,作者及联络方式,版权宣告方式,建档日期,历史记录等”;

         c、环境变量的宣告,主要是PATH和LANG;
         d、exit 0,代表离开script并且传回一个0,若接着下达echo $,可得到0值。(在此也可自定义错误信息)。

4、写第一个shell script:

mkdir scripts;cd scripts
vim sh01.sh
#!/bin/bash
# program:
#  This program shows"Hello world!" in your screen.
# History:
# 2016/11/18 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World! \a \n"
exit 0

例1:对谈式脚本,变量可由用户决定。如输入姓、名,输出全称。

vim sh02.sh
#!/bin/bash
#program:
#  User input his first name and last name ,Program shows his fullname.
#History:
#2016/11/18 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input your firstname:" firstname #提示使用者输入
read -p "Please input your lastname:" lastname #提示使用者输入
echo -e "\nYour full name is: $firstname $lastname" #结果输出到屏幕
exit 0

例2:随日期变化:利用date进行档案的建立

vim sh03.sh
#!/bin/bash
#program:
#  Program creats three files,which named by user's input and date command.
#History:
#2016/11/18 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#使用者输入文件名,取得fileuser这个变量
echo -e "I will use 'touch' command to creat 3 files."  #纯显示信息
read -p "Please input your filename:" fileuser

#利用变量功能分析档名是否有设定?
filename=${fileuser:-"filename"} #开始判断是否配置文件名,【:】表示变量未设定则后面将其替换
date1=$(date --date='2 days ago' +%Y%m%d)  #前两天的日期
date2=$(date --date='1 days ago' +%Y%m%d)  #前一天的日期
date3=$(date +%Y%m%d)  #今天的日期
file1=${filename}${date1}     #底下三行在配置文件名
file2=${filename}${date2}
file3=${filename}${date3}

#建立档名
touch "$file1"
touch "$file2"
touch "$file3"

#创建文件的命令有touch、vi、cat、mv、less等。
#vim内删除光标以下的行:Ndd
例3、数值计算:加减乘除
vim sh04.sh
#!/bin/bash
#program:
#  User inputs 2 integer numbers;program will cross these two numbers.
#History:
#2016/11/18 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

echo -e "Your SHOULD input 2 numbers,I will cross them!\n"
read -p "first number:" firstnum
read -p "second number:" secnum
total=$(($firstnum*$secnum))
echo -e "\n The result of $firstnum x $secnum is == > $total"
exit 0

#var=$((运算内容)) ——好处是两个小括号内可以加上空格符
#也可以用【declare -i total=$firstnum*$secnum】
例4、test检测功能
vim sh05.sh
#!/bin/bash
#program:
# User input a filename, program will check the flowing:
# 1.) exist? 2.) file/directory? 3.) file permissions
#History:
#2016/11/20 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Please input a filename,I will check the filename's type and \
permission. \n\n"
read -p "Please input your filename:" name
#判断是否真的有输入字符串
test -z $filename && echo  "You must input a filename." && exit 0
#判断档案是否存在,不存在则显示信息并退出
test ! -e $filename && echo "The filename '$filename' DO NOT exits" && exit
#判断文件类型与权限
test -f $filename && filetype="$regulare file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable"
test -w $filename && perm="$perm writable"
test -x $filename && perm="$perm executable"
#开始输出信息!
echo "The filename:$filename is a $filetype"
echo "And the permissions are:$perm"
例5、[ ]的检测功能
vim sh06.sh
#!/bin/bash
#program:
# This program shows the user's choice
#History:
#2016/11/20 Shawn First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N):" yn
[ "$yn" == "Y" -o "$yn" =="y" ] && echo "OK,continue" && exit 0
[ "$yn" == "N" -o "$yn" =="n" ] && echo "Oh,interrupt" && exit 0
echo "I don't know what your choice is" && exit 0
#其中的-o是或的意思,表示连结两个判断
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: