Shell

运行shell

sh xx.sh  运行脚本
chmod+x ./xx.sh  执行权限并运行脚本
shell脚本说白了就是一堆linux命令写在一个文件里面,然后统一执行

 

变量

name="besttest"
age=18
class=("1班" "2班" "3班" )  输出全部 echo ${class[*]}
${name}
$name
echo ${class[2]}  数组取值

 

取长度

name="beijing"
echo ${#name}
echo ${#class[*]}
echo ${class[*]}  

 

输入、输出

echo "xxx"
read name
单引号和双引号的区别 单引号是原样字符串,不会转义

 

运算

sum=`expr 1 + 1`
sum2=`expr ${age} + 1`

 

条件判断 -- 数值型运算符

-eq    等于
-ne   不等于
-lt   小于
-gt   大于
-lte   小于等于
-gte  大于等于

 

字符串运算符

=
!=

 

if格式

echo "请输入年龄:"
read age
if [ $age -gt 18 ]
then
echo "成年人"
elif [ $age -lt 18 ]
then
echo "未成年人"
else
echo "刚满18 岁"
fi


and和or

age=8
if [ $age -gt 10 -a ` expr $age % 2 ` -eq 0 ]
#if [ $age -gt 10 -o ` expr $age % 2 ` -eq 0 ]
then
echo "是大于10的偶数"
fi
字符串判断 name="beijing" if [ $name != "beijing" ] then echo "北京" fi

 

循环 -- 循环数组

class=("1班" "2班" "3班" )
for item in ${class[*]}
do
echo $item
done


for循环

for num in 1 2 3 4 5 6
do
echo $num
done

 

while循环

count=0
while [ $count -lt 10 ]
do
echo $count
count=`expr $count + 1`
done

 

函数

基本格式
my_print (){
echo "nihao"
}


有入参的
oushu(){
number=$1
if [ 0 -eq `expr $number % 2` ]
then
echo "偶数"
else
echo "奇数"
fi
}

oushu 5
oushu 4


直接用来判断的
abc="123"
delete(){
st=`expr 1 \* 1024`
file=$1
size=`du -k $file | awk '{print $1}'`
if [ $size -gt $st ]
then
abc="文件大于100m"
return 0
else
return 1
fi
}

if delete "test2.sh"
then
rm -rf "test.sh"
fi


获取返回结果的
delete "test2.sh"
result=$?
echo $result

 

重定向

content=`< test2.sh`
echo $content
keyword="nihao ya "
#echo $keyword > aaa.txt
echo $keyword >> aaa.txt

 

练习

启动mysql的脚本
arg=$1 pid=`ps -ef|grep /opt/lampp/sbin/mysqld |grep -v grep|awk '{print $2}'` command="/opt/lampp/lampp startmysql" stop_command="/opt/lampp/lampp stopmysql" start(){ if [ $pid ] then echo "mysql 已经启动了" else $command echo "mysql已启动" fi }
stop(){ if [ $pid ] then $stop_command echo "mysql 已经停止" else echo "mysql未启动" fi }

restart(){ stop start } if [ "$arg" = "stop" -o "$arg" = "start" -o "$arg" = "restart" ] then $arg else echo "请输入 start|stop|restart" fi

备份数据库的脚本
day=`date +%Y%m%d`
file_name="/tmp/${day}_all_data.sql"
mysqldump -uroot -p123456 -A > $file_name
echo "mysql 备份完成!"

 

 
上一篇:Jquery父子兄弟节点合集


下一篇:java面试宝典Beta5.0 复制内容