1.linux的shell编程
linux当中的shell是一门脚本语言,所见即所得
shell变成一般指代shell脚本的开发,不是指代shell内核的开发
Linux 的 Shell 种类众多, 一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统中安装的 shell。
统一两个路径
mkdir -p /export/softwares 存放我们的软件的压缩包
mkdir -p /export/servers 存放我们软件解压之后的路径
shell脚本第一行约定俗成:
#!/bin/bash或者#!/bin/sh
shell脚本运行的两种方式
第一种方式 :sh hello.sh 或者 bash hello.sh
第二种方式:添加执行权限
chmod -R 777 hello.sh 或者chmod u+x hellp.sh
2.shell变量
1.1定义
变量=值 your_name=“itcast.cn”
注意:变量名与等号之间不能有空格,
同时变量名的命名须遵循如下规则:
1.首个字符必须为字母( a-z, A-Z)
2.中间不能有空格,可以使用下划线( _)
3.不能使用标点符号
4.不能使用 bash里的关键字(可用 help 命令查看保留关键字)
显示文本行号:
1.2变量的使用
使用一个定义过的变量,只要在变量名前面加$即可
your_name=“itcast.cn”
echo $your_name
echo ${your_name}
花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
已定义的变量,可以被重新定义。
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
使用 unset 命令可以删除变量。不能删除只读变量。
readonly variable_name
unset variable_name
1.3变量的范围定义
局部变量:仅在当前的shell交互窗口当中有效,在其他窗口中无效
环境变量:所有的shell窗口全部共享,都可以使用的变量,这个范围是最大的,所有用户艘可以共享的变量
使用set命令查询全部环境变量
shell变量:只在当前的脚本当中有效,其他脚本无效
shell 变量是由 shell 程序设置的特殊变量。 shell 变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了 shell 的正常运行
1.4参数传递
在执行 Shell 脚本时, 可以向脚本传递参数。
脚本内获取参数的格式为: $n。 n 代表一个数字, 1 为执行脚本的第一个参数, 2 为执行脚本的第二个参数,以此类推…… 第十个参数以及之后的参数需要使用{}将数值括起来 如: ${10}
$0 表示当前脚本名称。
*1.5 $ 和$ @区别
相同点: 都表示传递给脚本的所有参数。
不同点:
不被" “包含时,
∗
和
*和
∗和@都以$1 $2…
n
的
形
式
组
成
参
数
列
表
。
被
"
"
包
含
时
,
"
n 的形式组成参数列表。 被" "包含时,"
n的形式组成参数列表。被""包含时,"*” 会将所有的参数作为一个整体,以"$1 $2 …
n
"
的
形
式
组
成
一
个
整
串
;
"
n"的形式组成一个整串; "
n"的形式组成一个整串;"@" 会将各个参数分开,以"$1" “
2
"
…
"
2" … "
2"…"n” 的形式组成一个参数列表
3.shell运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如加,减,乘,除等操作。
注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。
除了变量不空格,其他到处都空格
完整的表达式要被 `` 包含,注意不是单引号,在 Esc 键下边。
注意:
此外,还可以通过(())、 $[]进行算术运算。
4.流程控制
1.if else语句
if
condition1
then
command1
elif condition2
then
command2
else
commandN
fi
条件表达式写法
EQ 就是 EQUAL等于
NQ 就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于
2.for循环
方式一:
for N in 1 2 3
do
echo $N
done
(这种方式要掌握)
或
for
N in 1 2 3; do echo $N; done
或
for
N in {1…3}; do echo $N; done
方式二
for ((i = 0; i <= 5; i++))
do
echo “welcome $i times”
done
或
for
((i = 0; i <= 5; i++)); do echo “welcome $i times”; done
3.while循环
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量
计算中不需要加上 $ 来表示变量。 自加操作: let
no++ 自减操作: let no—
sleep命令表示休眠
4.case语句
case 值 in
模式 1)
command1
command2
…
commandN
;;
模式 2)
command1
command2
…
commandN
;;
esac
5.函数的使用
function可以省去
5.liunx的基础环境准备
5.1三台虚拟机关闭防火墙
root用户来执行
service iptables stop
chkconfig iptables off
5.2三台机器关闭selinux
vim /etc/selinux/config
5.3三台机器更改主机名
vim /etc/sysconfig/network
5.4三台机器做主机名与IP地址的映射
vim /etc/hosts
5.5三台机器重启
reboot -h now
5.6三台机器免密码登录
3030
测试:
5.7三台机器的时钟同步
第一种同步方式:通过网络进行时钟同步
通过网络连接外网进行时钟同步,必须保证虚拟机连上外网
4030
ntpdate us.pool.ntp.org;
阿里云时钟同步服务器
ntpdate ntp4.aliyun.com
三台机器定时任务
crontab -e
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;
或者直接与阿里云服务器进行时钟同步
crontab -e
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
5.8三台机器安装jdk
查看自带的openjdk
rpm -qa | grep java
卸载系统自带的openjdk
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
tzdata-java-2016j-1.el6.noarch
java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps
上传jdk并解压然后配置环境变量
为了保持我们的安装环境统一和一致,我们这里创建两个约定俗称的文件夹,来进行我们的软件包的存放和软件的安装
所有软件的安装路径
mkdir -p /export/servers
所有软件压缩包的存放路径
mkdir -p /export/softwares
安装工具,方便我们上传文件
yum -y install lrzsz
通过shell脚本一键安装jdk
一定要注意:尽量先备份三台机器的 /etc/profile这个文件
> 与 >> 的区别
> 表示文本覆盖
>>表示文本追加