shell 学习

1.shell 编程:解释型的编程语言(python,php)
shell 脚本 就是在用Linux 的shell 命令编程。

写一个最简单的
mkdir script
cd  scripts/
vi hello.sh
在打开第一行写入#!bin/bash
echo "hello world" 保存退出
./hello.sh 或者 sh hello.sh

变量
定义一个 STR=“hello world”
如果想打印hello words is great
正确写法是 echo ${STR}s is great

export a 可把变量提升为当前shell 进程中的全局变量环境,可供其他子shell 程序使用。如果要在b中打印出a脚本的变量a,需要在a脚本中把变量a做export定义此时,a变量就成了a.sh脚本所在bash进程的全局变量,该进程的所有子进程都能访问到变量a

或者在a 中用source +b的路径
source可以 . 来代替 source ./b.sh b.sh就在a.sh所在的bash进程空间中运行

shell 流程控制语句

if[condation] condation 前后要有空格
短路(理解为三元运算符)
[ condition ] && echo OK || echo notok
条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句

2/ 条件判断组合
注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 && || 符号

3.字符串比较:= !=
-z 字符串长度是为0返回true
-n 字符串长度是不为0返回true
if [ ‘aa’ = ‘bb’ ]; then echo ok; else echo notok;fi
if [ -n “aa” ]; then echo ok; else echo notok;fi
if [ -z “” ]; then echo ok; else echo notok;fi
整数比较:
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

4.while语法

1、方式一
while expression
do
command

done

2、方式二
i=1
while ((i<=3))
do
echo $i
let i++
done

5 case语法

case $1 in
start)
echo “starting”
;;
stop)
echo “stoping”
;;
*)
echo “Usage: {start|stop}”
esac

6 for语法

1、方式一
for N in 1 2 3
do
echo NdoneforNin123;doechoN; done

for N in {1..3}; do echo $N; done

2、方式二
for ((i = 0; i <= 5; i++))
do
echo “welcome itimesdonefor((i=0;i<=5;i++));doechowelcomei times”; done

shell 编程练习

自动化软件部署脚本
公司内有一个N个节点的集群,需要统一安装一些软件(jdk)
需要开发一个脚本,实现对集群中的N台节点批量自动下载、安装jdk

2、思路
1/ 编写一个启动脚本,用来发送一个软件安装脚本到每一台机器
2/ 然后启动每台机器上的软件安装脚本来执行软件下载和安装

脚本开发
1、启动脚本
vi boot.sh

# !/bin/bash

SERVERS="mini1 mini2"
PASSWORD=hadoop
BASE_SERVER=192.168.33.11

##  实现免密登陆配置的函数
auto_ssh_copy_id() {
    expect -c "set timeout -1;
        spawn ssh-copy-id $1;
        expect {
            *(yes/no)* {send -- yes\r;exp_continue;}
            *assword:* {send -- $2\r;exp_continue;}
            eof        {exit 0;}
        }";
}

ssh_copy_id_to_all() {
    for SERVER in $SERVERS
    do
        auto_ssh_copy_id $SERVER $PASSWORD
    done
}

调用免密登陆配置函数,实现母鸡到各仔鸡的免密登陆配置

ssh_copy_id_to_all

完成分发install.sh到各仔鸡的操作

并让仔鸡启动install.sh

for SERVER in $SERVERS
do
    scp install.sh root@$SERVER:/root
    ssh root@$SERVER /root/install.sh
done

2、安装执行脚本
vi install.sh

#!/bin/bash

BASE_SERVER=192.168.33.11
##  为本机安装wget命令
yum install -y wget
## 使用wget从母鸡的web服务器上下载jdk压缩包
wget $BASE_SERVER/soft/jdk-7u67-linux-x64.gz
## 将下载的压缩包解压
tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local
## 修改profile配置文件
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1.7.0_67
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

3、启动脚本
只要在baseServer即mini上启动boot.sh即可

阅读更多
换一批

没有更多推荐了,返回首页