码迷,mamicode.com
首页 > 系统相关 > 详细

linux运维、架构之路-shell编程入门

时间:2017-09-21 15:53:03      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:技术   全局   获取   shell   分支   vimrc   常用   脚本   term   

一、shell编程入门必备基础

1、vim编辑器的命令,vimrc设置

2、150个linux基础命令

3、linux中基础的系统服务crond,ssh网络服务,nfs,rsync,inotify,lnmp,sersync,nmap等

二、变量分类

1、全局变量

[root@nfs-server ~]# env
HOSTNAME=nfs-server
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=172.19.5.146 49184 22
SSH_TTY=/dev/pts/1
USER=root
……

2、局部变量 只对当前shell用户生效

定义环境变量:

①export OLDBOY=1——>定义环境变量,临时生效

②如果想要全局生效,需要加入到环境变量配置文件

 /etc/profile  /etc/bashrc  ~/.bashrc ~/.bash_profile

 /etc/profile.d

③unset OLDBOY——>删除环境变量

④尽量用有意义的字符串定义变量,比如大写字母的方式

⑤驼峰语法定义:首个单词字母小写,其余单词首字母大写

devPath=/server/scripts

devFileList=`ls`

⑥注意单、双引号的问题,一般字符串用双引号定义

⑦引用变量时,注意金庸新著问题---将变量名用大括号包起来

echo ${week}day

3、特殊位置变量

$0

获取当前执行的shell脚本的文件名,包括路径

$n

获取当前执行的shell脚本的第N个参数值,n=1..9,如果n大于9,就用${10}

$#

获取当前shell命令行中参数的总个数

$?

0表示成功***** 2权限拒绝, 126找到了命令,但无法执行

$$

获取当前shell的进程号(pid)

三、read交互式设置变量

-p 设置提示语句

-t 设置超时时间

-s 关闭回显,让输入不显示在屏幕上

小题:写个atm程序,让你输入你的银行卡账号和密码,然后在屏幕上打印你的输入结果

技术分享

[root@zabbix scripts]# sh atm.sh 
请输入你的银行卡:18774499487766
请输入你的密码:765689
你的银行卡 18774499487766
“你的密码” 765689

四、 条件表达式

1、常用文件判断

技术分享

①判断文件存在且为普通文件

[root@zabbix scripts]# [ -f /etc/hosts ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

②判断目录存在且为目录文件

[root@zabbix scripts]# [ -d /etc ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

③判断文件存在且为软链接文件

[root@zabbix scripts]# [ -L /etc/rc.local ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

④判断文件存在且可读

[root@zabbix scripts]# [ -r /etc/hosts ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

⑤判断文件存在且可执行

[root@zabbix scripts]# [ -x /etc/init.d/sshd ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

⑥判断文件存在且可写

[root@zabbix scripts]# [ -w /etc/hosts ] && echo "表达式成立"||echo "表达式不成立"
表达式成立

2、常用字符串判断

技术分享

①判断字符串长度是否为0

[root@zabbix scripts]# [ -z "oldboy" ]&& echo "表达式成立"||echo "表达式不成立"
表达式不成立

②空则为0

[root@zabbix scripts]# [ -z "" ]&& echo "表达式成立"||echo "表达式不成立"
表达式成立

③双引号里面有空格,空格不为0

[root@zabbix scripts]# [ -z " " ]&& echo "表达式成立"||echo "表达式不成立"
表达式不成立

3、 整数判断

-eq等于           -ne不等于       -gt大于 

-ge大等于        -lt小于          -le小等于

[root@zabbix scripts]# [ 1 -gt 2 ] && echo "表达式成立"|| echo "表达式不成立" ——>判断1大于2
表达式不成立
[root@zabbix scripts]# [ 1 -eq 1 ] && echo "表达式成立"|| echo "表达式不成立" ——>判断1等于1
表达式成立
[root@zabbix scripts]# [ 1 -lt 2 ] && echo "表达式成立"|| echo "表达式不成立" ——>判断1小于2
表达式成立

五、流程控制语句

1、if语句

语法:

一、if[判断条件];then

    执行的程序

elif[判断条件];then

    执行的程序

else

fi

单分支:一个条件一个结果

双分支:一个条件两个结果

多分支:多个条件多个结果

用if语句实现比较两个整数的大小

技术分享

[root@zabbix scripts]# sh num.sh 1 2
1<2
[root@zabbix scripts]# sh num.sh 1 1
1=1
[root@zabbix scripts]# sh num.sh 2 1
2>1

2、case语句

语法

case 值 in

模式1)

    command

    ;;

模式2)

    command

    ;;

*)

    command

    ;;

esac

让用户通过输入水果的名字,输出到屏幕上并加颜色

技术分享

技术分享

给输出字体加颜色

字体颜色设置:
echo -e "\033[30m 黑色字oldboy trainning \033[0m"
echo -e "\033[31m 红色字oldboy trainning \033[0m"
echo -e "\033[32m 绿色字oldboy trainning \033[0m"
echo -e "\033[33m 黄色字oldboy trainning \033[0m"
echo -e "\033[34m 蓝色字oldboy trainning \033[0m"
echo -e "\033[35m 紫色字oldboy trainning \033[0m"
echo -e "\033[36m 天蓝字oldboy trainning \033[0m"
echo -e "\033[37m 白色字oldboy trainning \033[0m"
背景颜色:
echo -e "\033[40;37m 黑底白字 welcome to old1boy\033[0m"
echo -e "\033[41;37m 红底白字 welcome to old2boy\033[0m"
echo -e "\033[42;37m 绿底白字 welcome to old3boy\033[0m"
echo -e "\033[43;37m 黄底白字 welcome to old4boy\033[0m"
echo -e "\033[44;37m 蓝底白字 welcome to old5boy\033[0m"
echo -e "\033[45;37m 紫底白字 welcome to old6boy\033[0m"
echo -e "\033[46;37m 天蓝白字 welcome to old7boy\033[0m"
echo -e "\033[47;30m 白底黑字 welcome to old8boy\033[0m"
关闭颜色\033[0m

3、for循环语句

语法:

#!/bin/bash

for i(变量) in {1..10}  in后面可以加命令`ls`  `seq 10`

do

     echo $i

done

通过for循环写一个开机自启动优化脚本

技术分享

[root@zabbix scripts]# sh chkconfig.sh 
[root@zabbix scripts]# chkconfig|grep 3:on
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on     2:on    3:on     4:on   5:on    6:off

写一个好玩的倒计时脚本,在屏幕上输出10 09 08 07 06 05 ……

技术分享

echo命令知识点小结:

echo  -n 不换行 -e 支持特殊字符 \b退一格

4、while循环语句

true  为真,条件永远成立

while true

  do

   echo "Hello world"

   sleep 1

done

5、各个条件表达语句使用场景

if(取值判断)

for(正常循环处理)语句最常用,

while(守护进程无限循环,小于1分钟的任务都可以用while循环)

case(系统服务启动脚本)

linux运维、架构之路-shell编程入门

标签:技术   全局   获取   shell   分支   vimrc   常用   脚本   term   

原文地址:http://www.cnblogs.com/yanxinjiang/p/7568620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!