一、什么是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. win8硬盘安装Ubuntu14.04双系统參考教程

    硬盘安装,无需光盘.U盘.win8为主.Ubuntu14.04为辅.可将Windows或Ubuntu设置为开机默认启动项.在Ubuntu下可查看.操作Windows系统下的文件:适用于安装和14.04 ...

  2. nonlocal(非局部变量)---python 3.x 新增关健词

    Python里只有2种作用域:全局作用域和局部作用域.全局作用域是指当前代码所在模块的作用域,局部作用域是指当前函数或方法所在的作用域.其实准确来说,Python 3.x引入了nonlocal关键字, ...

  3. HBase伪分布式安装及简单使用

    HBase是Hadoop的数据库,基于Hadoop执行.是一种NoSQL数据库. 特点:分布式.多版本号.面向列的存储模型.可以大规模的数据实时随机读写,可直接使用本地文件系统. 不适合:与关系型数据 ...

  4. linux 文件&文件夹大小排序

    按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...

  5. 配置YUM源更新源

    在虚拟机上更新yum,总是告诉我找不懂镜像服务器地址,配置失败,连 #yum install yum 它自己都无法更新. 于是决定先配置一下yum的更新源. 首先找到yum的主要配置文件, 一般在/e ...

  6. 捕获网络数据包并进行分析的开源库-WinPcap

    什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets.  这是一种简单的 ...

  7. 高盛CEO致大学毕业生:要与有野心的人为伍

    我认为讲的非常棒.年轻人就要这样. 高盛集团首席运行官(CEO)劳尔德-贝兰克梵(Lloyd Blankfein)周四在曼哈顿贾维茨中心參加了拉瓜迪亚社区大学的第41届毕业典礼并发表演讲.在面向约10 ...

  8. Atitit.跨语言系统服务管理器api兼容设计

    Atitit.跨语言系统服务管理器api兼容设计 1. Common api,兼容sc ,service control??1 1.1. 服务创建,use sc1 1.2. 服务delete ,use ...

  9. 堆排序算法的java实现

         堆积排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O ...

  10. TransactionScope的用法

    using (TransactionScope ts = new TransactionScope()) { Model.user_login_log model = new Model.user_l ...