Linux当中的shell编程

1.linux的shell编程

linux当中的shell是一门脚本语言,所见即所得
shell变成一般指代shell脚本的开发,不是指代shell内核的开发
Linux 的 Shell 种类众多, 一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统中安装的 shell。
1

统一两个路径
mkdir -p /export/softwares 存放我们的软件的压缩包
mkdir -p /export/servers 存放我们软件解压之后的路径

shell脚本第一行约定俗成:
#!/bin/bash或者#!/bin/sh

shell脚本运行的两种方式
第一种方式 :sh hello.sh 或者 bash hello.sh
2

第二种方式:添加执行权限
chmod -R 777 hello.sh 或者chmod u+x hellp.sh
3

2.shell变量

1.1定义
变量=值 your_name=“itcast.cn”
注意:变量名与等号之间不能有空格,
同时变量名的命名须遵循如下规则:
1.首个字符必须为字母( a-z, A-Z)
2.中间不能有空格,可以使用下划线( _)
3.不能使用标点符号
4.不能使用 bash里的关键字(可用 help 命令查看保留关键字)

显示文本行号:
4

1.2变量的使用
使用一个定义过的变量,只要在变量名前面加$即可
your_name=“itcast.cn”
echo $your_name
echo ${your_name}
花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
已定义的变量,可以被重新定义。
5

6

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
使用 unset 命令可以删除变量。不能删除只读变量。
readonly variable_name
unset variable_name

1.3变量的范围定义
局部变量:仅在当前的shell交互窗口当中有效,在其他窗口中无效

环境变量:所有的shell窗口全部共享,都可以使用的变量,这个范围是最大的,所有用户艘可以共享的变量
使用set命令查询全部环境变量

shell变量:只在当前的脚本当中有效,其他脚本无效
shell 变量是由 shell 程序设置的特殊变量。 shell 变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了 shell 的正常运行
7

1.4参数传递
在执行 Shell 脚本时, 可以向脚本传递参数。
脚本内获取参数的格式为: $n。 n 代表一个数字, 1 为执行脚本的第一个参数, 2 为执行脚本的第二个参数,以此类推…… 第十个参数以及之后的参数需要使用{}将数值括起来 如: ${10}
$0 表示当前脚本名称。
8

9

*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 键下边。
10

11

注意:
此外,还可以通过(())、 $[]进行算术运算。
12

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 小于等于

13

14

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

15

3.while循环
16

let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量
计算中不需要加上 $ 来表示变量。 自加操作: let
no++ 自减操作: let no—

sleep命令表示休眠

4.case语句

case 值 in
模式 1)
command1
command2

commandN
;;
模式 2)
command1
command2

commandN
;;
esac

17

5.函数的使用
18

19

function可以省去

5.liunx的基础环境准备

5.1三台虚拟机关闭防火墙
root用户来执行
service iptables stop
chkconfig iptables off

5.2三台机器关闭selinux
vim /etc/selinux/config
20

5.3三台机器更改主机名
vim /etc/sysconfig/network
21

5.4三台机器做主机名与IP地址的映射
vim /etc/hosts
22

5.5三台机器重启
reboot -h now

5.6三台机器免密码登录
3030
测试:
23

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;
24

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这个文件
26

27

28

>  与   >> 的区别

25

   > 表示文本覆盖
   >>表示文本追加
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 ... ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值