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
相关文章推荐
- linux入门-shell(.sh)脚本编写和运行
- Shell脚本编写及常见面试题(一)
- 转:Shell 编程--本文结合大量实例阐述如何编写一个shell脚本。
- 转 -- 编写可靠shell脚本的8个建议
- shell 脚本 与 shell 脚本的编写
- shell脚本编写汇集
- 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- 使用if语句编写Shell脚本
- 编写可以监控oracle监听器是否启动的shell脚本
- shell脚本编写 之 条件选择,条件判断,循环语句
- shell脚本实现彩色进度条的编写
- [linux]windows上编写的shell脚本linux上报错,Bom问题
- Shell脚本的编写(摘录)
- SHELL入门教程(7)-编写脚本
- 用shell脚本编写彩色进度条
- 编写Shell脚本(二)(转)
- window下编写shell脚本出现格式错误的处理方法
- 如何优雅地编写shell脚本
- 应用python编写shell脚本