教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 Shell自动化操作的代码分享

Shell自动化操作的代码分享

发布时间:2014-10-25   编辑:jiaochengji.com
本文介绍下,用shell脚本实现系统管理的自动化,有需要的朋友参考下。

用shell实现自动化管理,那感觉真是棒。

今天就分享下用shell脚本自动化管理的一段脚本。

注意事项:
#是注释,但是第一句#!/bin/bash是指定shell的解释脚本。
#!后面带上解释脚本的绝对路径。

如果脚本第一句不以#!开头则默认使用 Bourne Shell, 即:/bin/sh
如果第一个非空字符是#但不是#!开头则默认使用 C Shell。

常用的解释脚本有:
#!/usr/bin/perl
#!/bin/php
#!/bin/expect

参数
Shell脚本通常都可以用命令+参数的形式调用,如:
command -p1 - p2
在脚本中 $# 代表参数个数,$0 代表程序的名字。所以跟平时习惯不同的是,第一个参数是 $1 而不是 $0。最多支持9个参数, $1 – $9.

比较
Shell的比较常用
 

-lt #小于
-gt #大于
-eq #等于

如:
if [ "$a" -eq "$b" ];
也可以使用CShell风格的 < , > 但是需要加上双层括号,如:
if (("$a" < "$b")) then
还有一些其他的比较方式,不复杂的脚本有 -lt -gt 就足够了。

变量
aVar=123 #变量赋值
echo $aVar #变量使用
字符串操作
字符串操作在作文件命名的时候很有用,可以批量重命名之类的。

有关shell字符串操作的介绍,请参考文章:http://www.jiaochengji.com/article/9788.html

条件判断
 

#[]里面一定要有两个空格
if [ $# -lt 3 ];
then
else
fi
#以fi结束每一个if

下面是脚本内容:
 

复制代码 代码示例:

#!/bin/bash
#配置打包后会输出的路径
targetPath=~/Download/packages/
echo "****************************************"
echo "* Pack Language Packages. -- JustinYim *"
echo "****************************************"
echo "ouput path: ~/Download/packages/"
echo "Now Starting..."
 
if [ $# -lt 2 ];
then
echo "Oops, please append the Resources folder's path."
echo "And the version name like: pack xxx/xxx 1.1.2"
else
echo "Resources path: "$1
echo "Clening target path..."
rm -rf ~/Downloads/packages/*
echo "CPing files..."
#CP Files
cp -rf $1/*.lproj ~/Downloads/packages/
cd ~/Downloads/packages
 
#中文简体不进行更新,直接删掉
rm -rf zh_cn.lproj
#zip files

#新建一个配置文件
echo '[package]' > conf.conf
 
#设置包的起始值,因为之前已经有很多个包在服务器上了
num=7
 
#遍历所有文件
for filename in $(ls)
do
#不对配置文件进行压缩动作
if [ "$filename" = "conf.conf" ]
then
echo "Config file!"
continue
fi

#echo "ZIPing "$filename"..."
 
#替换掉版本号里面的.字符,如1.1.2改为1_1_2作为文件名用
ver=${2//./_}
#去掉文件名后缀,%表示从字符串尾部开始,找到.字符的时候,去掉后面的字符,如:ar.lproj会变成ar
#如果是 ${filename#.*} 则会变成从头部开始, ar.lproj会变成 lproj
lang=${filename%.*}
#设置zip文件的名字
zipname=x.strings.$lang.$ver.zip
#复制并压缩x.strings文件
cp $filename/x.strings x.strings.$lang
zip $zipname x.strings.$lang
 
#echo 'wirting config file...'
 
#自动编写配置文件
echo '[number'$num']' >> conf.conf
echo 'Id='$((++num)) >> conf.conf
echo 'PackPath=/xxx/package/'$zipname >> conf.conf
echo 'Name='$lang'|'$2 >> conf.conf
echo '' >> conf.conf
#clean files
 
#删掉临时文件
echo "Remove temp files..."
rm -rf $filename
rm x.strings.$lang
done
fi

您可能感兴趣的文章:
深入解析tcsh的初始化配置文件
inux shell初级入门教程
mysql备份与同步脚本
Linux下自动清理日志的shell脚本
shell脚本向mysql表批量插入数据
Shell自动化操作的代码分享
在shell脚本中使用ftp的方法分享
shell脚本实现ftp自动化操作的实例分享
几个shell自动化脚本(定期清理、磁盘空间、搜寻关键字)
Solaris shell下操作数据库的方法

[关闭]
~ ~