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

shell脚本实例1

2014-02-24 15:19 246 查看
自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油!

1.模拟linnux登录shell

#/bin/bash

echo -n "login:" //-n 表示不换行

read name

echo -n "password:"

read passwd

if [ $name = "cht" -a $passwd = "abc" ];then //注意(1)-a (2)以及=判断字符串相等

echo "the host and password is right!"

else echo "input is error!"

fi

2.比较两个数大小

#/bin/bash

echo "please enter two number"

read a

read b

if test $a -eq $b //(3)数字大小比较(4)if else用法

then echo "NO.1 = NO.2"

elif test $a -gt $b

then echo "NO.1 > NO.2"

else echo "NO.1 < NO.2"

fi

3.查找/root/目录下是否存在该文件

#/bin/bash

echo "enter a file name:"

read a

if test -e /root/$a //-e判断文件是否存在 (5)文件的判断

then echo "the file is exist!"

else echo "the file is not exist!"

fi

4.for循环的使用

#/bin/bash

clear //清屏命令

for num in 1 2 3 4 5 6 7 8 9 10

do

echo "$num"

done

5.shell中调用命令

#/bin/bash

echo "Please enter a user:"

read a

b=$(whoami) //(6)调用命令方式

if test $a = $b

then echo "the user is running."

else echo "the user is not running."

fi

6.删除当前目录下大小为0的文件

#/bin/bash

for filename in `ls` //``中执行命令

do

if test -d $filename

then b=0

else

a=$(ls -l $filename | awk '{ print $5 }') //$()获取执行命令的结果

if test $a -eq 0

then rm $filename

fi

fi

done

7.如果/export/um_lpp_source下有文件,那么将其文件系统大小改为3G

#/bin/bash

while line=`ls /export/um_lpp_source` //若没有文件,会不停的去检验,知道有文件为止

do

if test "$line"="" //注意判断字符串为空 "$line"

then echo "NULL"

sleep 1

else echo $line

chfs -a size=3G /export/um_lpp_source //chfs命令更改文件系统的属性

exit 0

fi

done

8.测试IP地址

#/bin/bash

for i in 1 2 3 4 5 6 7 8 9

do

echo "the number of $i computer is "

ping -c 1 192.168.0.$i //学习linux主要命令http://www.cnblogs.com/peida/archive/2013/03/06/2945407.html

done

9.如果test.log的大小大于0,那么将/opt目录下的*.tar.gz文件

#/bin/sh

a=2

while name="test.log" //动态监测日志文件大小的方法

do

sleep 1

b=$(ls -l $name | awk '{print $5}') //获取一个文件大小的方法

if test $b -ge $a

#then echo "OK"

then `cp /opt/*.tar.gz .`

exit 0

fi

done

10.打印读取的内容,为下面的例子做准备

#/bin/bash

while read name //这是一个死循环

do

echo $name

done //默认为标准输入

11.从0.sh中读取内容并打印

#/bin/bash

while read line

do

echo $line

done < 0.sh //改变输入

12.读取a.c中的内容并做加1运算

#/bin/bash

test -e a.c // -e filename 判断文件是否存在

while read line

do

a=$(($line+1)) //linux下进行算数计算的方法

done < a.c

echo $a //逻辑有问题嘛,最后只是将最后一行加1

13.普通无参数函数

#/bin/bash

p ()

{

echo "hello"

}

p

14.给函数传递参数

#/bin/bash

p_num ()

{

num=$1 //注意shell中全局变量、局部变量的关系

echo $num

}

for n in $@ //$@代码脚本的参数"$1" "$2" "$3" 等

do

p_num $n //调用函数的方法

done

15.创建文件夹

#/bin/bash

while :

do

echo "please input file's name:"

read a

if test -e /root/$a //新建一个目录或文件时要判断该文件是否存在

then

echo "the file is existing Please input new file name:"

else

mkdir $a

echo "you aye sussesful!"

break

fi

done

16.获取本机IP地址 ifconfig用法以及配置iphttp://hi.baidu.com/aoxiangfeilong/item/74ea1a84484cbeceef083dfc

#/bin/bash //获取本机ip地址的方法

ifconfig | grep "inet addr:" | awk '{ print $2 }'| sed 's/addr://g'

17.查找最大文件 //只是目录下的最大文件

#/bin/bash

a=0

for name in *.*

do

b=$(ls -l $name | awk '{print $5}') //方法$(命令) 等价 `命令`

if test $b -ge $a

then a=$b

namemax=$name

fi

done

echo "the max file is $namemax"

18.查找当前网段内IP用户,重定向到ip.txt文件中

#/bin/bash

a=1

while :

do

a=$(($a+1))

if test $a -gt 255

then break

else

echo $(ping -c 1 192.168.0.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')

ip=$(ping -c 1 192.168.0.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')

echo $ip >> ip.txt

fi

done

19.打印当前用户

#/bin/bash

echo "Current User is :"

echo $(ps | grep "$$" | awk '{print $2}') //学习ps命令

20.case语句练习

#!/bin/bash

clear

echo "enter a number from 1 to 5:"

read num

case $num in

1) echo "you enter 1"

;;

2) echo "you enter 2"

;;

3) echo "you enter 3"

;;

4) echo "you enter 4"

;;

5) echo "you enter 5"

;;

*) echo "error"

;;

esac

21.yes/no返回不同的结构

#!/bin/bash

clear

echo "enter [y/n]:"

read a

case $a in

y|Y|Yes|YES) echo "you enter $a"

;;

n|N|NO|no) echo "you enter $a"

;;

*) echo "error"

;;

esac

22.内置命令的使用 //了解这些内置命令

#/bin/bash

clear

echo "Hello, $USER"

echo

echo "Today 's date id `date`"

echo

echo "the user is :"

who

echo

echo "this is `uname -s`"

echo

echo "that's all folks! "

23.打印无密码用户

#/bin/bash

echo "No Password User are :"

echo $(cat /etc/shadow | grep "!!" | awk 'BEGIN { FS=":" }{print $1}')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: