一、脚本编写范例:

1.编写一个脚本。

1)、显示当前系统上第1块网卡eth0IP地址,如果发生错误,则重定向至/dev/null

2)、显示/var/目录下的所有文件或子目录,但要把所有字母换成大写

3)、以一个命令显示当前系统上所有可用shell对应的可执行文件的文件内容类型,并让结果以全大写的方式显示;

#!/bin/bash

echo "The ip address is:"

ifconfig eth0 | grep "inet addr" | cut -d: -f2 | cut -d' ' -f1 2> /dev/null

echo "/var file is:"

ls /var | tr 'a-z' 'A-Z'

echo "SHELL is: "

file `cat /etc/shells | tr 'a-z' 'A-Z'`                                                                                                          

2.写一个脚本:

添加10个用户user1user10.但要求只有用户不存在的情况下才能添加:

第一种方法:

#!/bin/bash

 for muser in {1..10}; do

     useradd "user$muser" &> /dev/null || echo "yong hu yi cun zai" || echo "yong hu chuang jian successfully"

done

第二种方法

#!/bin/bash

for newuser in {1..10} ; do

   ! id user$newuser &> /dev/null && useradd user$newuser &> /dev/null && echo "user$newuser" | passwd --stdin

   user$newuser &> /dev/null && echo "Add user user$newuser successfully"

done

3.写一个脚本:

通过ping命令测试192.168.0.151192.168.0.254之间的所有主机是否在线,在线,就显示“IP is up. 不在线,就显示"ip is down."

#!/bin/bash

NET=192.168.0

for I in {151..254}; do

  ping -c1 -W1 $NET.$I &> /dev/null && echo "$NET.$I is up." || echo "$NET.$I is down."

done

4.写一个脚本,测试172.16.0.016网络内的所有主机是否在线;

#!bin/bash

echo " lian xi ti di 5 ti"

declare -i n=0 m=0

host=172.16

 for n in {0..254}; do

   for m in {1..254}; do

 ping -c1 -W1 $host.$n.$m &> /dev/null && echo "$host.$n.$m is up." || echo "$host.$n.$m is down."

 done

done                                                                                                                                             

5.写一个脚本:

1)新建文件mysed.txt,含有如下行:

/etc/inittab

/etc/pam.d/sudo

/usr/share/doc/

/usr/local/

/etc/sysconfig/

/var/log/messages

2)、取出如上文件中每一行文件名中不包含路径的文件名,

比如,/etc/inittab的文件名为inittab/etc/sysconfig/的文件名为sysconfig

(注意不能使用basename命令,要使用sed

3)、取出如上文件中每一行文件名中不包含文件名的路径,

比如,/etc/inittab的路径为/etc/usr/share/doc的路径名为/usr/share

#!/bin/bash

FILE=/tmp/mysed.txt

cat > $FILE <<EOF

/etc/inittab

/etc/pam.d/sudo

/usr/share/doc/

/usr/local/

/etc/sysconfig/

/var/log/messages

EOF

sed 's@.*/\([^/]\{1,\}\)/\{0,1\}@\1@g' $FILE

sed 's@\(.*\)/[^/]\{1,\}/\{0,1\}@\1@g' $FILE

6.写一个脚本,完成以下功能:

1)、创建文件mycp.txt,包含如下内容:

cut

netstat

pwd

mke2fs

mkswap

blkid

gcc

man

eject

sshd

说明:这些文件位于/bin, /sbin, /usr/bin, /usr/sbin目录中,但具体哪个命令在哪个目录中,可以使用which命令查看到。

2)、如果不存在,则创建空目录/tmp/mylinux,否则,先删除后再重新创建,并且在/tmp/mylinux中创建子目录bin, sbin, usr, usr/bin, usr/sbin

3)、将cut文件复制至相应的/tmp/mylinux目录的某个子目录中去。比如,将/bin/cut复制到/tmp/mylinux/bin目录,把/sbin/mke2fs复制到/tmp/mylinux/sbin目录中;

#!/bin/bash

FILE=/tmp/mycp.txt

target="/tmp/mylinux"

cat > $FILE << EOF

cut

netstat

pwd

mke2fs

mkswap

blkid

gcc

man

eject

sshd

EOF

[ -e $target ] && rm -rf $target &> /dev/null

mkdir $target &> /dev/null

for command in `cat $FILE` ; do

   cmd=`which $command | grep -v "^alias" | grep -o "/.*"`

   cmdpath=`echo $cmd | sed 's@\(.*\)/[^/]\{1,\}/\{0,1\}@\1@g'`

[ -d $target/$cmdpath ] || mkdir -p $target/$cmdpath &> /dev/null

 cp $cmd $target/$cmdpath

done