shell脚本编写

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
  1. if的语法:
    if
    条件
    then
    commands
    else
    commands
    fi

    或者是另种形式:

    if 条件
    then
    commands
    elif 条件
    then
    commands
    elif 条件
    then
    commands
    ….
    else
    commands
    fi

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

  2. case条件语句:
    语法: case 条件 in
    xxx)
    commands;;
    xxx)
    commands;;
    xxx)
    commands;;
    esac

暂且谈到这里有需要,会继续深入shell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值