Shell编程指南

 更新时间:2014年12月21日 16:01:47   投稿:hebedich  
这里汇总了一下关于shell编程的相关知识点,由简入深,非常的不错,这里推荐给大家

基础知识

shell执行方式   sh xx.sh (文件须有r权限)  ||  ./xx.sh (文件须有x权限) 注:sh xx.sh方式比较安全
文件名后缀 .sh
shell内容开头 #!/bin/bash || #!/bin/sh || #!/bin/csh || #!/bin/ksh 注:#!/bin/bash 使用比较多
退出  exit 0

变量赋值与使用

不需要定义即可直接使用  注:变量赋值时=号两端不能有空格
以$变量名或${变量名}访问变量内容

流程控制

判断  注:确保方括号的空格 ; 确定每个条件都有then

复制代码 代码如下:

if [ –d ‘dirname' ];then
    命令集1
elif 条件2;then
    命令集2
else
     命令集4
fi

复制代码 代码如下:

case $变量 in
match_1 )
        命令集1
        ;;
match_2)
        命令集2
        ;;
……
*)(可选)
        命令集n
        ;;
esac

循环

1.while 条件

复制代码 代码如下:

do

        //TODO

done

2.until 条件

复制代码 代码如下:

do
    命令集
done

 
3.for ((初始值;条件;步进))

复制代码 代码如下:

do
    命令集
done

4.for 循环变量 in 变量列表

复制代码 代码如下:

do
    命令集
done

常用判断条件语句

判断文件类型

测试标志    语义    举例
-e    “文件或目录”是否存在    test –e $file_name
-f    “文件或目录”是否存在且为文件    test –f $file_name
-d    “文件或目录”是否存在且为目录    test –d “/boot”
-b    “文件或目录”存在且为块设备    test –b “/dev/sda1”
-c    “文件或目录”存在且为字设备    test –c “/dev/tty0”
-S    “文件或目录”存在且为Socket文件    test –S “/var/run/rpcbind.sock”
-p    “文件或目录”存在且为FIFO文件    test –p $file_name
-L    “文件或目录”存在且为链接文件    test –L $file_name

判断文件权限

测试标志    语义
-r    “文件或目录”是否存在且具有可读权限
-w    “文件或目录”是否存在且具有可写权限
-x    “文件或目录”是否存在且具有可执行权限
-u    “文件或目录”存在且具有SUID的属性
-g    “文件或目录”存在且具有SGID的属性
-k    “文件或目录”存在且具有Sticky bit的属性
-s    “文件或目录”存在且为非空文件

文件之间比较

测试标志    语义
-nt    “文件名1”是否比”文件名2”新 (newer than)
-ot    “文件名1”是否比”文件名2”旧(older than)
-ef    判断”文件名1”和”文件名2”是否为同一个文件,主要用来判断硬链接,即两个文件是否指向同一个inode节点

整数之间比较

测试标志    语义
-eq    两数相等(equal)
-ne    两数不等(not equal)
-gt    整数1大于整数2(greater than)
-lt    整数1小于整数2(less than)
-ge    整数1大于等于整数2(greater than or equal)
-le    整数1小于等于整数2(less than or equal)

与、或、非
测试标志    语义
-a    (and) 两个条件同时成立则返回true  test –e file1 –a –d file2
-o    (or)两个条件任意一个成立则返回true  test –r file1 –o –x file2
!    (非)当前条件取非  test ! –d file1

控制结构

计算整数变量值

expr  注: 运算符号和参数之间要有空格分开;通配符号(*),在作为乘法运算符时要用\;
let 例子:let s=(2+3)*4

相关文章

  • 使用Shell实现ini文件的读写

    使用Shell实现ini文件的读写

    这篇文章主要为大家详细介绍了如何使用Shell实现ini文件的读写,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-11-11
  • shell中打印ssh登录远端ip地址的实现

    shell中打印ssh登录远端ip地址的实现

    本文主要介绍了shell中打印ssh登录远端ip地址的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2008-12-12
  • 使用scp获取远程linux服务器上的文件 linux远程拷贝文件

    使用scp获取远程linux服务器上的文件 linux远程拷贝文件

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,scp传输是加密的,下面看一下详细使用方法吧
    2014-01-01
  • shell脚本批量删除es索引的方法

    shell脚本批量删除es索引的方法

    今天小编就为大家分享一篇关于shell脚本批量删除es索引的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 隐藏shell脚本内容的工具 shc详解

    隐藏shell脚本内容的工具 shc详解

    本文主要介绍了隐藏shell脚本内容的工具 shc, 虽然它加密的安全性不高,但是我们平常可以把它作为一个shell脚本代码隐藏和混淆工具来使用,对shell脚本隐藏相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • Centos下查看网卡的实时流量命令

    Centos下查看网卡的实时流量命令

    本文介绍了linux下查看网卡流量的六种方法,linux系统中使用nload、iftop、iostat等工具查看网卡流量,这里我们先来详细讲解下 iptraf 方法,需要的朋友参考下。
    2015-05-05
  • Shell脚本统计当前目录下目录和文件的数量

    Shell脚本统计当前目录下目录和文件的数量

    这篇文章主要介绍了Shell脚本统计当前目录下目录和文件的数量,Linux下如何统计当前目录下文件有多少个,目录又有多少个呢,使用本文脚本即可实现,需要的朋友可以参考下
    2014-12-12
  • Linux Shell脚本系列教程(七):脚本调试

    Linux Shell脚本系列教程(七):脚本调试

    这篇文章主要介绍了Linux Shell脚本系列教程(七):脚本调试,本文讲解了Bash内建调试功能和自定义调试功能等内容,需要的朋友可以参考下
    2015-06-06
  • Linux 中的Edquota命令

    Linux 中的Edquota命令

    Linux edquota命令用于编辑用户或群组的磁盘配额。下面通过本文给大家分享Linux 中的Edquota命令,感兴趣的朋友一起看看吧
    2017-10-10
  • shell监控linux系统进程创建脚本分享

    shell监控linux系统进程创建脚本分享

    shell监控linux系统进程创建脚本,大家参考使用吧
    2013-12-12

最新评论