例题:
shell1.sh 显示日期和时间。
#!/bin/bash
echo“current time is `date`” //date要加反引号
shell2.sh显示文件名,并显示位置参数(执行时带一个参数)。(①$0是一个特殊的变量,它的内容是当前这个shell程序
的文件名;②$1是一个位置参数,位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二个替换$2,
依次类推。)
#!/bin/bash
echo“the program name is $0” //$0是一个特殊的变数
echo“the first para is $1” //$1是一个位置参数
echo“the program exit” //执行时带一个参数如./shell2.sh abcd
shell3.sh判断并显示位置参数
#!/bin/bash
if[ -d “$1”];then
echo“$1 is directory ,existed”
else
echo“$1 does not exist ,now create it”
mkdir$1
echo“$1 is created”
fi //执行时带一个参数
shell4.sh 问候用户
#!/bin/bash
user=`whoami`
case $user in
teacher)
echo“hello teacher”;;
root)
echo“hello root”;;
*)
echo“hello $user,welcome”
esac
求1+2+3+...+100的和是?
#!/bin/bash
SUM=0
I=0
while[ $I -le 100 ]
do
SUM=$((SUM+I))
I=$((I+1))
done
echo"由1+2+3+...+100的和是:$SUM"
2、(基训十一)在根目录下有四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动创建m1,m2,m3,m4四个目录,并将m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自相应的目录下。
#!/bin/bash
cd/
touchm1.txt m2.txt m3.txt m4.txt
I=1
while[ $I -le 4 ]
do
mkdirm$I
cpm$I.txt m$I
I=$((I+1))
done
3、(基训十二) 编写一个名为myfirstshell.sh的脚本,它包括以下内容。a)包含一段注释,列出您的姓名、脚本的名称和编写
这个脚本的目的。
b)问候用户。
c)显示日期和时间。
d)显示这个月的日历。
e)显示您的机器名。
f)显示当前这个操作系统的名称和版本。
g)显示父目录中的所有文件的列表。
h)显示root正在运行的所有进程。
i)显示变量TERM、PATH和HOME的值。
j)显示磁盘使用情况。
k)用id命令打印出您的组ID。
m)跟用户说“Goodbye”
#!/bin/bash
#09嵌入5号贾德进myfirstshell.shshell的简单编程
user=`whoami`
case$user in
root)
echo"hello root";;
teacher)
echo"hello teacher";;
*)
echo"hello $user,welcome"
esac
echo"日期和时间:`date`"
echo"本月的日历:`cal`"
echo"本机的机器名:`uname-n`"
echo"当前这个操作系统的名称和版本:`uname-s;uname -r`"
echo"父目录中的所有文件的列表:`ls../`"
echo"root正在运行的所有进程:`ps -u root`"
echo"变数TERM的值:$TERM"
echo"变数PATH的值:$PATH"
echo"变数HOME的值:$HOME"
echo"磁盘的使用情况:`df`"
echo"用id命令打印出你的组ID:`id-g`"
echo"Good bye!"
4、(基训十三)设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限为rwxr-xr—
#!/bin/bash
cd/userdata
I=1
while[ $I -le 50 ]
do
mkdir-p userdata/user$I
chmodo-x user$I
I=$((I+1))
done
5、(基训十四) 编写shell程序,实现自动删除50个用户账号的功能。账号名为stud1至stud50。
#!/bin/bash
cd/userdata
I=1
while[ $I -le 50 ]
do
mkdir-p userdata/user$I
chmodo-x user$I
I=$((I+1))
done
6、(基训十四)设计一个shell程序,备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式
yymmdd_etc,yy为年,mm为月,dd为日。
#!/bin/bash
DIRNAME=`ls|root|grep bak `
if[-z $DIRNAME ]; then
mkdir/root/bak
cd/root/bak
fi
YY=`date+ %y`
MM=`date+ %m`
DD=`date+ %d`tar czvf ${YY}${MM}${DD}_etc.gz /etc
echo"etc bak finshied"
7、(基训十四) 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(1)在下午4:50删除/abc目录下的全部子目录和全部文件;
(2)下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
(3)在下午5:55将IDE接口的第二个逻辑分区卸载。
//采用:vi pram.cron
#(1)在下午4:50删除/abc目录下的全部子目录和全部文件;
5016 *** rm -rf /abc/*
#(2)下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
5017 *** tar czvf back.tar.gz /data
#(3)在下午5:55将IDE接口的第二个逻辑分区卸载.
5517 *** umount /dev/hda6
//执行:crontabpram.cron