一、什么是shell script

  将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了.
  再加上些智能(条件/流控)控制,就变成了智能化脚本了

二、变量命名规则

  以字母或下划线开头,剩下的部分可以是:字母、数字、下划线.

遵循下述规范:

  1.以字母开头
  2.使用中划线或者下划线做单词的连接
  3.同类型的用数字区分
  4.对于文件最好加上拓展名
    例如: sql_bak.tar.gz,log_bak.tar.bz2 

定义变量名的边界

[root@MiWiFi-R3-srv ~]# rest_mem=
[root@MiWiFi-R3-srv ~]# echo ${rest_mem}%
%

(()) 比较

测试操作 [] 

  # x=

  # [ $x -gt ]

  # echo $?   

=    :字符是否相等

!=    :字符不相等

-eq    :判断数字是否相等

-ne    :判断数字不相等

-gt    :判断一个数字大于另一个数字

-ge    :判断一个数字大于等于另一个数字

-lt      :判断一个数字小于另外一个数字

-le      :判断一个数字小于等于另外一个数字

-b      :文件存在并且是一个块设备文件

-d      :文件存在并是一个目录文件

-e      :文件存在

-f       :文件存在,并且是一个普通文件

-a      :与

-o      :或

三、流程控制

if 循环     用户验证:

 #!/bin/bash
read -p 'please input your name:' username
read -p 'please input your passwd:' passwd if [ $username = 'alex' -a $passwd = 'alex3417' ];then
echo 'login successful'
else
echo 'login err'
fi

猜年龄:

 #!/bin/bash
age=
read -p 'please input oldboy age' oldboy_age
if [ $oldboy_age -gt $age ];then
echo 'too older'
elif [ $oldboy_age -lt $age ];then
echo 'too yanger'
else
echo 'congratulation!'
fi

while循环   验证文件类型

 while :
do
read -p 'input you file: ' file
if [ -z $file ];then
continue
else
break
fi
done
if [ -b $file ]; then
echo "$file is block file"
elif [ -f $file ]; then
echo "$file is regular file"
elif [ -d $file ]; then
echo "$file is direvtory file"
else
echo '$file type unkown'
fi

while和if循环      猜年龄(2)

 #!/bin/bash
age=
while :
do
read -p 'please input oldboy age:' oldboy_age
if [ -z $oldboy_age ];then
echo 'age is null'
continue
fi
if [ $oldboy_age -gt $age ];then
echo 'too older'
elif [ $oldboy_age -lt $age ];then
echo 'too yanger'
else
echo 'congratulation!'
break
fi
done

for 循环  输出奇数

 #!/bin/bash
num=
for i in {..}
do
if ((i% == ));then
continue
fi
echo '======'$i
done

for循环   测试局域网有效ip

 #!/bin/bash  
for i in {..}
do
ping -c1 192.168..$i &> /dev/null    #-c1 只ping一次; &> /dev/null 将无用信息写入空文件
if [ $? -eq ];then
echo "192.168.16.$i"
fi
done

while 、for、if嵌套循环    统计/dev下每种类型文件的数量:

 #!/bin/bash
while :
do
read -p 'your dir:' dirname
if [ -z $dirname ];then
continue
else
break
fi
done
for i in $(ls $dirname)
do
if [ -h $dirname/$i ];then
((link_file+=))
elif [ -f $dirname/$i ];then
((putong_file+=))
elif [ -d $dirname/$i ];then
((dir_file+=))
fi
done
echo "pu tong wen jian shu:$putong_file"
echo "mu lu wen jian shu:$dir_file"
echo "lian jie wen jian shu:$link_file"

两层循环    输出九九乘法表

 #!/bin/bash
for i in {..}
do
for ((j=;j<=i;j++))
do
echo -n "$i*$j= $[$i*$j] "
done
echo
done

登录验证完善版

 #!/bin/bash
user='egon'
passwd=''
tag=true
while $tag
do
read -p 'please input your name:' username
read -p 'please input your passwd:' pas
if [[ $username = $user ]] && [[ $pas = $passwd ]];then
echo 'login successful'
while $tag
do
read -p '>> : ' cmd
if [[ $cmd = 'quit' ]];then
tag=false
else
$cmd
fi done
else
echo 'login err'
fi
done

Linux基础系列:常用命令(8)_shell script的更多相关文章

  1. Linux基础之常用命令整理(一)

    Linux 操作系统的安装 如今比较流线的linux操作系统 Centos Redhat  Fedora Ubuntu, 安装操作系统的提前是要有操作系统的镜像文件(.iso文件)并且必须为系统指定一 ...

  2. Linux基础、常用命令

    Linux作为IT程序员必知必会知识,将自己学习到的和最近工作常用的一些命令进行总结,作为我结束过去生活和开始类程序员的序吧! 如果你想系统性学习的话,还是建议看书(鸟哥的Linux私房菜)或网上视频 ...

  3. Linux基础之常用命令篇

    一.命令的基本格式 [root@localhost~] root为用户名 -表示当前所在位置 localhost主机名 ‘#’超级用户 '$" 普通用户 命令的基本格式: 命令 [选项] [ ...

  4. Linux基础之常用命令(1)

    一 linux命令的格式 1.命令  [选项]  [参数] ls  list    显示目录下内容 ①  命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能 ...

  5. Linux 压缩系列常用命令

    tar 命令: http://man.linuxde.net/tar zip 命令: http://man.linuxde.net/zip unzip 命令: http://man.linuxde.n ...

  6. Linux基础之常用命令整理(二)

    Linux系统启动流程 bios(找到启动介质) --> mbr(找到boot loader  512B 446引导信息 64分区信息 2 标志位 ) -->grub(选择操作系统或者内核 ...

  7. Linux基础和常用命令

    经常使用的命令: #查看端口被占用情况 netstat -tunlp|grep #查看java进程 ps -ef|grep java #压缩前端工程 rar a -ep1 ./update/win32 ...

  8. 【原创】Linux基础之常用命令

    1 磁盘.cpu.内存相关 查看全部设备信息 # lspci 查看整体磁盘空间占用情况 # df -h 查看整体磁盘inode占用情况 # df -i 查看文件详细信息 # ls -l $path 查 ...

  9. linux基础知识-常用命令

    ifconfig :查看当前ip hostname:查看主机名 vim /etc/hosts:修改地址映射 service iptables status : 查看防火墙状态 chkconfig ip ...

  10. 《Linux基础知识及命令》系列分享专栏

    <Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...

随机推荐

  1. RabbitMQ一

    RabbitMQ: 一.rabbitmq的系统架构: RabbitMQ Server:也叫broker server,它不是运送食物的卡车,而是一种传输服务.原话是RabbitMQisn’t a fo ...

  2. xml中处理特殊字符和转义字符

    XML 中的特殊字符 > 和 开始标记 > 例如: 5 ]] 如何获得这些HTML内容呢? XmlDocument doc = new XmlDocument(); doc.Load(&q ...

  3. ubuntu安装rpm格式软件包

    转载自:http://os.51cto.com/art/200708/53942.htm ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb.用alien转 ...

  4. 操作REDIES

    import redis r=redis.Redis(host='118.XX.XX.XXX',password='XXXXXXX9*',db=1,port=6379) # 增删改查r.set('jd ...

  5. J2EE之字符编码输出

    1. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  6. go结构体组合函数

    结构体定义 上面我们说过Go的指针和C的不同,结构体也是一样的.Go是一门删繁就简的语言,一切令人困惑的特性都必须去掉. 简单来讲,Go提供的结构体就是把使用各种数据类型定义的不同变量组合起来的高级数 ...

  7. org.springframework.beans.factory.UnsatisfiedDependencyException

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,启动时报错如下: 严重: Context initialization failed org.springframew ...

  8. linux中的热插拔和mdev机制

    mdev手册(自己翻译的留着看) mdev实现U盘或SD卡的自动挂载 mdev的使用以及mdev.conf的规则配置--busybox linux中的热插拔和mdev机制 关于实现udev/mdev自 ...

  9. 【转】【FTP】之windows8.1上搭建FTP服务器方法

    参考地址:<windows8.1上搭建FTP服务器方法>

  10. 【JMeter4.0】之 “jdk1.8、JMeter4.0” 安装与配置以及JMeter永久汉化和更改界面背景、并附加附录:个人学习总结

    目录: 一.首先,需要安装.配置jdk 二.其次,安装.配置JMeter 三.JMeter汉化以及更改界面背景 四.附录:个人学习总结 一.首先,需要安装.配置jdk   返回目录 1.到官网下载1. ...