测试过程:vi test.sh 后把程序写入其中,保存退出。然后改变文件属性:chmod +x test.sh
最后执行:./test.sh
for语句测试:
1)
#!/bin/bash
for num in 1 2
3
do
echo "hello,num=$num"
done
2)
#!/bin/bash
for
((i=1;i<=3;i=i+1 ));do echo hello,$i;done
if语句测试:
#!/bin/bash
echo
"please run the program with more than one param"
if [ "$1" = ‘‘ ]
#$1是只运行该程序时可加参数1,如./iftest.sh
1
注意等号旁边和中括号的空格
then
echo
"error"
else
echo "ls内容为\n:" #echo
‘$1‘:$1
echo
`ls`
fi
while语句测试:
1)
#!/bin/bash
m=0
while [ $m -lt 10 ]
do
echo $m
m=`expr $m +
1` #注意m旁边的空格
done
2)
declare -i
m=0 #别一种在算术运算时声明变量的方法
while [
$m -lt 10 ]
do
echo
$m
m=$m+1
done
until语句测试:
1)
#!/bin/bash
declare -i m=10
until [
$m -lt 10 ]
do
echo $m
m=$m-1
done
2)
declare -i m=0
while [ $m -lt 10
]
do
echo
$m
m=$m+1
done
sed测试:
#!/bin/bash
#sed ‘/^root/ !s/bash/nologin/‘
/etc/passwd
man sed | col -b > fortest.sh
sed ‘1,$s/is/--end/‘
fortest.sh
sed ‘1,$s/is/--end/g‘ fortest.sh
sed ‘/is/=‘
fortest.sh
引号测试:
#!/bin/bash
var=hello
echo "var is $var"
echo
‘var is $var‘
echo "var is \$var"
echo `ls`
var2=date
echo
`$var2`
case语句测试:
#!/bin/bash
for (( ;; ))
do
echo "please input
a key:"
read word
case $word in
1)
echo "your
chioce is the
one"
;;
2)
echo "your chioce is the
two"
;;
3)
echo "your chioce is
the three"
;;
q)
echo "your
choice is exit"
exit
;;
*)
echo "illegal choice"
exit
esac
done
" $ "符号测试:
#!/bin/bash
echo "please run with more
than one parm";
echo "program name \$0:"$0;
echo "first param
\$1:"$2;
echo "first param \$$:"$$;
echo "first param
\$*:"$*;
数组的使用:
#!/bin/bash
hostip=("100","101","102","103","104","105","106","107","108","109","110")
hostpass=("123456","123456","123456","123456","123456","123456","123456","123456","123456","123456","123456")
i=1
while
[ $i -lt 12 ] ; do
ssh
root@10.0.2.hostip[$i]
done
重启别人电脑的shell:
#这个好像有点问题,需再测试下
#!/usr/bin/expect
spawn ssh
root@10.0.2.120expect
"password:"
send "123456\n"
expect "$"
send "reboot\n"
#expect
"password:"
#send "123456\n"
expect
eof
查找文件,需指定查找目录和文件的修改时间:
#!/bin/bash
path=$1
date=$2
if [ -z
$path ]
then
echo "Please input find
path:(eg:/dev/abc/)"
read path
fi
if [ -z $date
]
then
echo "Please input find
date:(eg:2006-04-23)"
read date
fi
ls -l $path
--time-style=long-iso | grep "$date
$time"
递归算法:
1)
#!/bin/bash
function myls()
{
local
y=`ls`;
echo $y;
for z in $y;do
if [ -d $z
];then
echo "进入子目录";
cd
`pwd`/$z;
myls;
echo
"返回上一级目录";
cd..;
fi
done
}
echo "please input a directory:"
read x
cd
$x
myls;
2)#!/bin/bash
check_dir()
{
if [ -d $y ];then
echo
"$y是一个目录";
ls -l $y
else
echo "$y是一个文件";
fi
}
echo "please
input a directory:"
read y
x=`ls $y`
echo $x
for y in
$x;do
check_dir
done;
备份脚本:
#!/bin/bash
/bin/tar -zcf
/var/mail
/bin/cp /var/mail.tar.gz /root
查找目录:
#!/bin/bash
ls -l |
grep ^d
#输出当前目录下的所有目录
更新ftp服务器上的文件:
#!/bin/bash
echo "open 10.0.2.224" > /tmp/ftp1.cmd
echo "user
ubunadm 123456" >> /tmp/ftp1.cmd
echo "get `date
+%Y`/`date +%Y%m`/`date +%d`/file01 /root/copy/file02" >>
/tmp/ftp1.cmd
ftp -nv <
/tmp/ftp1.cmd
echo "quit" >> /tmp/ftp1.cmd