7. if 判断一些特殊用法
if [ -z $a ] 这个表示当变量a的值为空时会怎么样
if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样
if [ ! -e file ]; then 表示文件不存在时会怎么样
if (($a<1)); then …等同于 if [ $a -lt 1 ]; then… [ ] 中不能使用<,>,==,!=,>=,<=这样的符号

if [ ! $a -gt 0 ];then... 代表不大于0

if [ -z $n1 ] 为空
if [ -n $n1 ] 不为空
if [ ! -z $n1 ]

8. shell中的case判断
格式: case 变量名 in
value1)
command
;;
value2)
command
;;
*)
commond
;;
esac

求余!!
vim case.sh
!# /bin/bash
n1=`echo $1 |sed 's/[0-9]//g'`
if [ -z $n1 ]; then
m=$[$1%2]
case $m in
1)
echo "the number is odd"
;;
0)
echo "the number is even"
;;
*)
echo "is other"
;;
esac
else
echo "the character you input not a number"
fi

sh case.sh 6 $1代表第一个参数

9. shell脚本中的循环
for循环 语法结构: for 变量名 in 条件; do … done
while 循环语法结构: while 条件; do … done 死循环用:表示
break直接结束本层循环(跳出整个循环); continue忽略continue之下的代码(跳出本次循环),直接进行下一次循环
exit 直接退出shell

序列
seq 1 [步长] 10 默认是1
seq 1 10
seq 10 -1 1
seq 10 -2 1
seq 1 2 10

seq -w 1 100 宽度一样 ============
001
002
...
100
===============
vim for.sh
!# /bin/bash
for i in `seq 1 10`
do
echo $i
done

==========
vim for.sh
!# /bin/bash
for file in `ls`
do
ls -ld $file
done

=========
vim for.sh
!# /bin/bash
sum=0
for n in `seq 1 100`
do
sum=$[$sum+$n]
done
echo $sum

==========while死循环
vim while.sh
!# /bin/bash
n1=1 这里可以是任意值
while [ ! -z $n1 ]
do
read -p "input a number:" n
n1=`echo $n |sed 's/[0-9]//g'`
done
echo "the number is $n."
===========
vim break.sh
!# /bin/bash
for i in 1 2 3 4 5
do
echo $i
if [ $i -eq 3 ]
then
break
fi
echo $i
done

10. shell中的函数
函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。
格式: function f_name() {
command
}
函数必须要放在最前面
函数里可以export 全局变量
===============
function mysum() {
sum=$[$1+$2]
echo $sum
}
s=`mysum 1 2`
echo $s
===============
function mysum() {
sum=$[$1+$2]
return $sum
}
mysum 1 2
echo $?
=============
function mysum() {
sum=$[$1+$2] 如果在sum前面加local就在函数里面生效

}
mysum 1 10
echo $sum
===========

11. shell练习题
编写shell脚本,计算1-100的和;
编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止;

vim sum.sh
!# /bin/bash
if_nu() {
n1=`echo $1|sed 's/[0-9]//g'`
if [ -z $n1 ]
then
if [ $1 -gt 1 ]; then return 1; else return 0;fi
else
return 0
fi
}

read -p "input a number :" n
if_nu $n
n2=`echo $?`
if [ $n2 -eq 1 ]
then
sum=0
for i in `seq 1 $n`
do
sum=$[$sum+$i]
done
echo $sum
else
echo "the character you input is not number"
fi

编写shell脚本,把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下;
find /root -maxdepth 1 -type d 搜索root下的一级目录
===========
for d in `ls /root/`; do if [ -d $d ]; then cp -r $d /tmp/;fi; done

for d in `find /root -maxdepth 1 -type d`; do if [ -d $d ]; then cp -r $d /tmp/;fi; done

编写shell脚本,批量建立用户user_00, user_01, ... user_100并且所有用户同属于users组;

for i in `seq -w 0 99`; do useradd -g users user_$i; done

编写shell脚本,截取文件test.log中包含关键词 ‘abc’ 的行中的第一列(假设分隔符为 ”:” ),然后把截取的数字排序(假设第一列为数字),然后打印出重复次数超过10次的列;

awk -F: '/abc/ {print $1}' test.log |sort |uniq -c |sort -n |awk '$1>10'

第三部分shell编程3(shell脚本2)的更多相关文章

  1. shell编程之服务脚本编写,文件锁以及信号捕获

    shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...

  2. shell编程系列1--shell脚本中的变量替换

    shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...

  3. 【Shell编程】Shell程序设计

    1.Shell简介   作为Linux灵感来源的Unix系统最初是没有图形化界面的,所有的任务都是通过命令行来实现的.因此,Unix的命令行系统得到了很大的发展,逐步成为一个功能强大的系统.   Sh ...

  4. Linux - 简明Shell编程11 - 调用脚本(CallTheScript)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 主脚本: CallTheScript.sh #!/bi ...

  5. Linux shell编程02 shell程序的执行 及文件权限

    第一个shell脚本 1.       shell编程的方式 交互式shell编程 非交互式shell编程:执行的语句存放到一个文件 shell脚本:可以任意文件名,建议扩展名为sh 2.       ...

  6. shell编程01—shell基础

    01.学习shell编程需要的知识储备 1.vi.vim编辑器的命令,vimrc设置 2.命令基础,100多个命令 3.基础.高端的网络服务,nfs,rsync,inotify,lanmp,sersy ...

  7. shell编程===执行shell脚本的四种方法

    使用vim创建一个shell文件,命名 hello.sh #!/bin/bash echo "hello shell !" 在linux中进行加载 chmod +x ./hello ...

  8. Shell编程—图形化脚本

    1创建文本菜单 1.1普通的文本菜单 $ cat menu1 #!/bin/bash # simple script menu function diskspace { clear df -k } f ...

  9. shell编程:利用脚本实现nginx的守护自动重启

    nginx_daemon.sh #!/bin/bash # this_pid=$$ while true do ps -ef | grep nginx | grep -v grep | grep -v ...

  10. 【Shell编程】Shell基本语法

    Shell 语法   Shell程序设计作为一种脚本语言,在Linux系统中有广泛的应用,本文记录了关于Shell程序设计的基础语法知识和常用命令,方便查询,熟练使用shell也需要经常实践,这对于完 ...

随机推荐

  1. s3c2440系统时钟详解

    一.S3C2440系统时钟体系 S3C2440的时钟控制逻辑可以外接晶振,然后通过内部电路产生时钟源:也可以直接使用内部提供的时钟源,他们通过引脚的设置来选择.时钟逻辑给整个芯片提供了3中时钟:FCL ...

  2. pymyspl模块

    pymysql的下载和使用 该模块本质就是一个套接字客户端软件,使用前需要事先安装,能够让我们在 Python程序中操作数据库. pymysql模块的下载: 在Python安装文件中找到scripts ...

  3. tomcat搭建https服务(非自签发)

    平时做自己的web demo基本上都是用http协议进行访问. 但是正式情况基本上都是https进行访问,所以掌握https的配置是很关键的. 需要准备的材料: 一台可以可以外网访问的远程服务器 to ...

  4. linux redhat NFS网络共享搭建

    nfs网络共享 测试环境: 服务端:redhat6.7 ip:192.168.1.100 客户端:redhat6.7 ip:192.168.1.110 一.服务端 1.创建共享文件夹 权限666即可 ...

  5. [Oracle]关于Oracle分页写法的性能分析及ROWNUM说明

    关于分页写法的性能分析及ROWNUM的补充说明 分页写法 一.测试前数据准备 SQL> SELECT COUNT(*) FROM BPM_PROCVAR; COUNT(*) ---------- ...

  6. 北京Uber优步司机奖励政策(3月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 学习Drupal一个容易被忽视的问题

    刚刚修复了一个问题,一个非常小的问题,但我花了2-3小时才查明原因并修复. 总结下来我忽视了一个非常常见的问题或者没有养成一个好的习惯. 问题现象是:论坛发帖,只有editor以上权限的人可以发帖,也 ...

  8. linux常用的命令之一chmod

    用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(g ...

  9. Linux命令应用大词典-第5章 显示文本和文件内容

    5.1 cat:显示文本文件 5.2 more:分页显示文本文件 5.3 less:回卷显示文本文件 5.4 head:显示指定文件前若干行 5.5 tail:查看文件末尾数据 5.6 nl:显示文件 ...

  10. C++0x,std::move和std::forward解析

    1.std::move 1.1std::move是如何定义的 template<typename _Tp> constexpr typename std::remove_reference ...