您的位置:首页 > 运维架构 > Shell

shell脚本编写

2016-08-27 11:03 197 查看

linux系统shell脚本编写

一.脚本的编写

(1).由于项目中需要用到脚本去调Java的一个命令(keytool),我在这里简单说一下示例的脚本名称叫import.sh),编写完后,记得文件命名的格式加个.sh的后缀,一般脚本中有cd命令的要以点命令来进行调用shell脚本,所谓点命令就是source命令,一般可以用“.”号代替,详细的可以查阅linux命令的帮助文档

#本脚本做证书的导入
#这里是指定shell脚本的编译环境
#!/bin/bash
#配置Java环境。JAVA_HOME指定jdk路径
JAVA_HOME="/usr/bin/java/jdk1.7.0_79"
JAVA_OPTIONS=" -hotspot -Xms128m -Xmx512m "
CLASS_PATH=.;
#进入java的安全证书库内
cd /usr/bin/java/jdk1.7.0_79/jre/lib/security
#可以将任意的Java命令在这里执行比如javac,java,java -version都是可以的
keytool -import  -alias certificate -keystore cacerts -file /home/admin/Desktop/CA/trust.cer -keypass changeit -storepass changeit


(2).终端中调用shell脚本

chmod +x import.sh
. ./import.sh


(第一行代码这里是给予脚本执行的权限,第二行中的“.”与”.”之间要留有空格。前面的点代表source命令。)

二.参数和变量设置

先讲单纯脚本内变量的定义

#!/bin/bash
a=520;
echo $a;


set 设置当前shell的变量

env 显示当前用户的变量

export 导出成用户变量

#!/bin/bash
var1=1;
var2=2;
var3=3;
set $var1,$var2,$var3 --设置first.sh这个脚本的参数变量为var1 var2 var3的值
echo $1;


可以看到结果是

[admin@localhost Desktop]$ ./b.sh
1,2,3


$0 此变量的值为:当前正在运行的脚本的名字

$# 此变量的值为:当前正在运行的脚本的参数的个数

$$ 此变量的值为:当前正在运行的脚本的进程号

$1 ,$2 ,$3… 此变量的值为:当前正在运行的脚本的一个变量的第n个参数

$* 此变量的值为:当前正在运行的脚本的一个变量的全部参数

$@ 此变量的值为:当前正在运行的脚本的一个变量的全部参数

$? 上个命令的退出状态,或函数的返回值。

推荐使用 $@

那么在调用脚本时候就可以传参./xx.sh a,b,c

这里a,b,c就是实际赋予脚本的值会分别传给$1 ,$2 ,$3进行调用

这里顺便讲下if和case(以前公司有用过就顺便演示下)

#脚本名称service——operate.sh
#!/bin/bash
if [[ $1 != device ]] && [[ $1 != tomc ]] && [[ $1 != kam ]] && [[ $1 != mysql ]] && [[ $1 != med ]] && [[ $1 != netw ]]
then
echo "Service error!"
exit 1;
elif [[ $2 != start ]] && [[ $2 != stop ]] && [[ $2 != restart ]]
then
echo "Operation error!"
exit 1;
fi

case $1 in
"netw")
case $2 in
*)
service network restart
if [[ "$?" != "0" ]]
then
echo Network restart Fail!
else
echo Network restart Success!
fi
esac
;;
"device")


(上面脚本启动的时候,传参进行调用,参数间使用空格分隔则tomc,start就会分别传给脚本中的 )

$1

$2

./service——operate.sh  tomc start


if的语法:

if

条件

then

commands

else

commands

fi

或者是另种形式:

if 条件

then

commands

elif 条件

then

commands

elif 条件

then

commands

….

else

commands

fi

说明:条件中可以不止一条语句,如果有多条语句的话,用&& 连接起来

case条件语句:

语法: case 条件 in

xxx)

commands;;

xxx)

commands;;

xxx)

commands;;

esac

暂且谈到这里有需要,会继续深入shell
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux