`

Linux Shell 编程 笔记

阅读更多
--------------------------------------- 【Shell编程笔记】 ---------------------------------------
【1】变量
i=1 #等号两边不能有空格,所有变量只有一种类型——字符窜
echo $i # 引用变量要用$符号,如果变量不止由字母数字下划线组成,还需要加{},如${A[0]}

【2】 echo `date '+%Y-%m-%d %H:%M:%S'` # 后置引用,将date输出返回
【3】 :  # 空命令,等价于NOP,也可认为与true相同,用途如下面:
while : # 同while true,死循环
do
    ...
done
if  :l # 等价于if [ 1 ],等价于if test 1
then :
else
    take-some-action
fi
: > filename #创建空文件或清空文件,同cat /dev/null > filename但不会产生新进程
【4】let执行整数运算
i=1
j=2
let "k=i+j"
((k=i+j))
k=$i+$j
【5】 格式化数字01,02,...
num=`printf "%02d" 1`
echo $num
==============================================================
【6】 test的用法 等价于[ contitions ]
1)判断表达式
test  表达式为真                    等价于if test ! 表达式为假
test 表达式1 –a 表达式2       两个表达式都为真
test 表达式1 –o 表达式2      两个表达式有一个为真
2)判断字符串
test –n 字符串                                字符串的长度非零
test –z 字符串                                字符串的长度为零
test 字符串1 = 字符串2                   字符串相等
test 字符串1 != 字符串2               字符串不等
3)判断整数
test 整数1 –eq 整数2                        整数相等(equal)
test 整数1 –ge 整数2                        整数1大于等于整数2 (greater or equal)
test 整数1 –gt 整数2                         整数1大于整数2 (greater than)
test 整数1 –le 整数2                         整数1小于等于整数2 (less or equal)
test 整数1 –lt 整数2                          整数1小于整数2 (less than)
test 整数1 –ne 整数2                        整数1不等于整数2 (not equal)
4)判断文件
test  File1 –ef  File2                            两个文件具有同样的设备号和i结点号
test  File1 –nt  File2                            文件1比文件2 新
test  File1 –ot  File2                            文件1比文件2 旧
test –b File                                           文件存在并且是块设备文件
test –c File                                           文件存在并且是字符设备文件
test –d File                                           文件存在并且是目录
test –e File                                           文件存在
test –f File                                            文件存在并且是正规文件
test –g File                                           文件存在并且是设置了组ID
test –G File                                           文件存在并且属于有效组ID
test –h File                                           文件存在并且是一个符号链接(同-L)
test –k File                                           文件存在并且设置了sticky位
test –b File                                           文件存在并且是块设备文件
test –L File                                           文件存在并且是一个符号链接(同-h)
test –o File                                           文件存在并且属于有效用户ID
test –p File                                           文件存在并且是一个命名管道
test –r File                                            文件存在并且可读
test –s File                                           文件存在并且是一个套接字
test –t FD                                             文件描述符是在一个终端打开的
test –u File                                           文件存在并且设置了它的set-user-id位
test –w File                                          文件存在并且可写
test –x File                                           文件存在并且可执行

==============================================================
【7】数组
(1) name = (value1 ... valuen) 此时下标从0开始
(2) name[index] = value
数组下标的范围没有任何限制,同时也不必使用连续的分量.
$ A=(a b c def)
==================================================
$ echo ${A[@]}       //取全部元素
a b c def
==================================================
$ echo ${A[0]}       //取第一个元素,等价于echo $A
a
==================================================
# 取得数组元素的个数
$ echo ${#A[@]}
4
$ echo ${#A
  • }
  • 4
    $ echo ${#A[3]}   //取得元素3即def的长度
    3
    ==================================================
    $ A[3]=yaoshuyin   //将第三个元素重新赋值
    $ echo ${A[@]}
    a b c yaoshuyin
    ==================================================
    //清除变量
    $ unset A
    $ echo ${A[@]}
    $
    =============示例 while循环===========
    #建立数组
    arrSource=("arrJobs.php" "arrSubHangye.php" "arrFirst.php" )
    arrDest=("buildhr"         \
          "buildtrain/htdocs" \
          "bankhr"         \
          "healthr"         \
          "elehr"         \
          )

    #取数组无元素个数
    lenArrSource=${#arrSource
  • }
  • lenArrDest=${#arrDest
  • }


  • #循环列出数组元素
    i=0
    while [ $i -lt $lenArrSource ]
    do
      echo ${arrSource[$i]}
      let i++
    done


    i=0
    while [ $i -lt $lenArrDest ]
    do
      echo ${arrDest[$i]}
      let i++
    done


    ==============示例: for循环==============

    #源文件
    arrSource=("/home/800hr/htdocs/login_jump.php")

    #目标网站
    arrDest=(ithr elehr buildhr bankhr healthr ctvhr chenhr mechr clothr cneduhr 56hr tourhr foodhr greenhr cnlawhr waimaohr)

    for outer in ${arrSource
  • }   #${arrSource[*]} 是数组中的所有元素
  • do
      for inner in ${arrDest
  • }
  •   do
        echo "ln -s $outer /home/${inner}/campus/"
      done
    done

    ==============================================================
    【8】预留变量
      $#    位置参数的数量
      $*     所有位置参数的内容,同$@
      $?    命令执行后返回的状态
      $$    当前进程的进程号
      $!     后台运行的最后一个进程号
      $0    当前执行的进程名
           $-    SHELL的当前选项,和set相同

    ==============================================================
    【9】控制语句
    条件测试有:[[]],[],test 这几种,注意:[[]] 与变量之间用空格分开。
    1)条件执行
    if conditions; then
    elif conditions; then
    else
    fi
    for
    2)条件执行
    case 变量 in
        值1)
            语句...
            ;;
        值2)
            语句...
            ;;
        ...
        值n)
            语句...
            ;;
        *)                   #其它情况
            语句...
            ;;
    esac
    3)for循环
    for i in $(seq 10); do
        echo $i; # 输出1 2 3 4 5 6 7 8 9 10 不换行
    done;
    for((i=1;i<=10;i++));do
        echo -n "$i "; # 输出1 2 3 4 5 6 7 8 9 10 不换行
    done;
    4)while循环
    i=10;
    while [[ $i -gt 5 ]];do
        echo $i;
        ((i--));
    done;
    while read line; do
        echo $line;
    done < /etc/hosts; # 按行读取/etc/hosts内容并输出,同cat /etc/hosts
    5)until循环(条件与while相反)
    a=10;
    until [[ $a -le 0 ]]; do # 同while [[ $a -gt 0 ]]; do
        echo $a;
        ((a--));
    done;
    6)select选择语句
    供用户选择选项,用case语句判断执行不同的语句。典型菜单。
    select ch in "begin" "end" "exit"
    do
        case $ch in
            "begin")
                echo "start something" 
                ;;
            "end")
                echo "stop something" 
                ;;
            "exit")
                 echo "exit" 
                 break;
                 ;;
            *)
                 echo "Ignorant" 
                 ;;
        esac
    done;
    执行效果如下(?后面是用户输入选择):
    1) begin
    2) end
    3) exit
    #? 1
    start something
    #? 2
    stop something
    #? 4
    Ignorant
    #? 6
    Ignorant
    #? 3
    exit

    分享到:
    评论

    相关推荐

      Linux Shell编程笔记

      描述:这是一份综合的Linux Shell编程笔记,适用于想要学习或加强对Linux操作系统下Shell脚本编程的理解的人。该笔记包含了Shell脚本的基础知识、常用命令和技巧,以及实际的编程示例和案例。无论您是初学者还是有...

      Linux Shell编程学习笔记

      Linux Shell编程学习笔记

      Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

      Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!

      《LINUX与UNIX SHELL编程指南》读书笔记-二次发布版

      本文将基于《LINUX与UNIX SHELL编程指南》这本书的读书笔记,深入探讨Linux与Unix Shell编程的核心知识点。 一、Shell概述 Shell是一个命令解释器,它接收用户输入的命令并执行。在Linux和Unix系统中,常见的Shell...

      《LINUX与UNIX SHELL编程指南》读书笔记

      《LINUX与UNIX SHELL编程指南》是一本深入探讨Linux和UNIX系统中Shell脚本编程技术的书籍。这本书旨在帮助读者理解和掌握Shell编程的核心概念,从而能够编写出高效、实用的自动化脚本,提高日常系统管理和任务执行的...

      shell编程笔记.zip_programy5v_shell_shell编程

      "shell编程笔记.zip_programy5v_shell_shell编程"这个压缩包包含了有关Shell编程的详细资料,特别是“shell编程笔记.pdf”文件,很可能是对这一主题的深入讲解。 首先,Shell编程的基础知识包括了解不同的Shell类型...

      linux与unix shell编程指南读书笔记.rar

      Linux与Unix Shell编程指南读书笔记提供了深入理解和熟练掌握Shell脚本编写技巧的宝贵资源。Shell是Linux和Unix操作系统中的命令解释器,它不仅用于交互式地执行命令,还能编写自动化任务的脚本,极大地提高了系统...

      shell编程教程.chm

      awk基础入门(4) ...Linux的shell编程(一) Linux的shell编程(二) Linux的shell编程(三) Linux的shell编程(四) Shell学习笔记 一 Shell学习笔记 二 Shell学习笔记 三 Shell学习笔记 四 Shell学习笔记 五

      LINUX与UNIX_Shell编程指南V1.0_学习笔记.docx

      这份学习笔记将深入探讨Shell编程的基础,包括文件权限与安全,这是理解Linux和Unix系统管理的关键。 首先,我们关注文件权限。在Linux和Unix中,每个文件和目录都有三个基本的权限:读(r)、写(w)和执行(x)。...

      linuxshell编程学习笔记(5)shell运算符号和运算命令.pdf

      Linux Shell 编程学习笔记(5)Shell 运算符号和运算命令 本资源主要讲解了 Linux Shell 编程中的运算符号和运算命令,涵盖了基本的四则运算、自增自减运算、取余运算等多种运算符号和命令。下面是对该资源中涉及到...

      unix shell编程第三版笔记

      "Unix Shell编程第三版笔记"是铁道出版社出版的一本教材,它深入浅出地讲解了Unix Shell编程的基础和高级技巧。这份笔记涵盖了从基本的命令行操作到复杂的脚本编写,帮助学习者掌握这一强大的自动化工具。 Unix ...

      linux与unix shell编程指南读书笔记

      本书重点讲述了当下最流行的两个Linux Shell——Borne Again Shell (bash)和TC Shell(tcsh),从它们的新特性、增加和内建的插件讲起直至具体的应用。通过对一个个实例的讲解,循序渐进地介绍了Linux Shell中的各个...

      Linux Shell编程-流程控制与循环(MD笔记)

      Linux Shell编程-流程控制与循环(MD笔记)

      《LINUX与UNIX SHELL编程指南》读书笔记.pdf

      《LINUX与UNIX SHELL编程指南》是一本深入讲解Linux和Unix系统下Shell编程的经典书籍,通过对这本书的读书笔记分析,我们可以提炼出一系列关键的知识点,涵盖了系统管理、服务配置、软件更新以及网络服务配置等方面...

      Linux Shell编程-脚本运行与变量置换(MD笔记)

      Linux Shell编程-脚本运行与变量置换(MD笔记)

      linuxshell脚本学习笔记.pdf

      Linux Shell 脚本学习笔记是学习 Linux Shell 编程的重要资源,本笔记涵盖了 Linux Shell 编程的基础知识和高级技术,涵盖了命令提示符、变量、重定向、管道、环境变量、数学计算、退出脚本、结构化命令等多个方面。...

      GNU_LINUX 系统编程笔记.pdf

      以上是基于《GNU/Linux系统编程笔记》中的知识点总结,涵盖了错误处理、I/O操作、文件目录管理、进程控制、线程、内存管理、IPC以及守护进程设计等关键领域,对于深入理解Linux系统编程有重要价值。

      Linux_shell编程学习笔记

      Linux Shell编程是Linux系统管理与自动化任务中的重要一环,主要通过编写脚本来实现对操作系统进行交互和控制。本文将详细解析Linux Shell编程中的几个关键概念:正则表达式、find命令、grep命令以及sed命令。 1. *...

      Unix&Linux shell编程指南

      《LINUX与UNIX SHELL编程指南》读书笔记.pdf可能包含了作者对原书的解读和实践经验。笔记中可能会强调错误处理、调试技巧,以及如何利用awk、sed等文本处理工具增强Shell脚本的功能。此外,文件和目录的权限管理、...

    Global site tag (gtag.js) - Google Analytics