`

初涉linux(三)之shell编程

阅读更多
如果系统学习,使用<<高级Bash脚本编程指南>>这本书
shell初级编程                                              by hayabusa
3.1讲义
  3.1.1 shell
     set //所有变量
     unset //取消变量设置
     export 变量 //导出变量,使其全局可用
     env //环境变量
  shell基本格式:
  #!/bin/bash
  //edit...
  chmod u+x script

  $(command)或者`command` //命令嵌套的写法
  3.1.2
    3.1.2.1
      stdin 标准输入
      stdout 标准输出
      stderr 标准错误输出
    3.1.2.2重定向:
      > 输出重定向
      2> 错误重定向
      &> 全部重定向
      tr 'a-z' 'A-Z' < var3.sh
   3.1.2.3
    管道:前者输出作为后者输入
       ls -l /etc | less    
   3.1.2.4
     多目标重定向
     command |tee t2.txt
3.1.3正则表达式
    ^  $   *
3.1.4 shell 带参数
     $1   $2    $*    $#
3.1.5 条件判断
      = -eq
      != -ne
      -gt
      -lt
      -ge
      -le
3.1.6控制流程 -a -o !

     while 条件
       do
        命令
       done
       
     if 条件
        then  命令(可以嵌套if)
     elif 条件
        then  命令
     else
        命令(可以嵌套if)
     fi

  @#!!//数值运算加两对圆括号
   case
     case 值 in
     模式)
        命令
    ;;
     模式)
        命令
    ;;
    ...
    esac


for 变量 in 'seq 1 100'
do
command
done
  //break continue 类似于C:exit直接退出,可带返回值
 
  until 条件
   do
   //command
   done
3.2 扩展
  3.2.1
     读老师的程序偷师到的几个命令
     basename /path/filename //printf the real name of a file
     cut  -d: -f2 // 这个命令用好了非常的强大
  3.2.2 userlist.sh
   # list all the users
#!/bin/bash
n=0;
for i in `cut -d: -f3 /etc/passwd`
do
((n=n+1))
m=`echo "$n " |tr ' ' 'p'`
if [ $i -le 60000 -a $i -ge 500 ]
   then cut -d: -f1 /etc/passwd|sed -n $m
elif [ $i = 0 ]
then cut -d: -f1 /etc/passwd|sed -n $m
fi
done
3.3 问题
    3.3.1
     caseselect 文件中的此句(鄙视自己,看了解释还不懂
     echo "`basename $0`:This is not between 1 and 5" >&2
    已解决:
    这句话的意思就是将stdout重定向到stderr之中,但是由于stdout与stderr的默认输出都是monitor,所以看不到效果,下边的代码好些:
    echo "`basename $0`:This is not between 1 and 5"  2>ver  >&2

分享到:
评论

相关推荐

    linux与unix shell编程指南

    《Linux与Unix Shell编程指南》是一本面向各个层次用户的实用教程,无论你是初涉Linux或Unix系统的新人,还是已经有一定经验的老手,都能从中获益。Shell编程是Linux和Unix系统中的重要一环,它提供了命令行接口,...

    LINUX与UNIX SHELL编程指南

    无论你是初涉SHELL编程的新手,还是寻求提升经验的开发者,这本《LINUX与UNIX SHELL编程指南》都能为你提供宝贵的指导。 通过阅读这本书,你可以深入理解SHELL编程的精髓,学会如何利用SHELL脚本来解决实际问题,...

    Linux公社技术文章(精华文章合集)

    总的来说,Linux公社技术文章合集是一份全面而深入的Linux学习资料,无论你是初涉Linux的新手,还是寻求技能提升的开发者,都能从中受益匪浅。通过学习和实践,你将能更好地理解Linux的工作原理,提高操作效率,并为...

    linux 程序设计(第三版)

    《Linux程序设计(第三版)》是一本深受...通过阅读《Linux程序设计(第三版)》,你将深入理解Linux环境下的程序设计原理,掌握必备的工具和技巧,无论你是初涉Linux开发还是寻求进阶,这本书都将是你不可或缺的指南。

    详细具体的讲解了linux系统的各种知识,是嵌入式入门的不二之选

    本文将详尽地探讨Linux系统的基础知识,以及它在嵌入式系统中的应用,为那些初涉Linux和嵌入式领域的学习者提供全面的指南。 一、Linux系统概述 Linux是一种自由和开放源代码的操作系统内核,由芬兰程序员林纳斯·...

    UNIX环境高级编程

    《UNIX环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,尤其对于初涉Linux领域的人来说,这本书无疑是一份宝贵的指南。它深入介绍了在UNIX操作系统环境下进行程序开发、系统管理及网络通信的各种技术和...

    Advanced Bash Scripting Guide 2.8.

    总之,《高级Bash脚本指南》不仅是Bash Shell编程的经典教材,也是任何希望在Linux和Unix环境中进行自动化和脚本编写的人的宝贵资源。Mendel Cooper的作品,凭借其全面性和深入性,无论是在教学还是在技术参考资料...

    linux 课程实验

    在本“Linux课程实验”中,我们将深入探讨Linux操作系统的核心概念和实际操作,这对于初涉嵌入式领域的学习者来说是一份宝贵的指南。通过一系列的实验,你可以掌握Linux系统的基本使用、管理技巧以及与嵌入式系统...

    unix

    标题 "Unix" 指涉的是一个历史悠久且广泛使用的操作系统家族,它以其强大的命令行界面、文本导向的工具以及开放源码的特性而闻名。Unix系统最初由肯·汤普逊(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)在1960...

    S3C2410完全开发流程(经典)

    对于初涉ARM嵌入式系统的开发者而言,熟悉并掌握以下工具链是至关重要的第一步。 **1. 编译器arm-linux-gcc-3.4.1** arm-linux-gcc是ARM架构下的交叉编译器,用于将源代码编译为可在S3C2410平台上运行的目标代码。...

    信任:Travis CI和AppVeyor模板可以在5种架构上测试您的Rust板条箱,并针对Linux,macOS和Windows发布其二进制版本

    通过两者结合,可以覆盖到Linux、macOS和Windows这三种主要操作系统。 3. **跨平台编译**:`cross-compilation`指的是在一个平台上为另一个平台编译代码。在Rust中,通过`rustc`的`--target`参数或Cargo的`target`...

    GDB使用手册,详尽的命令用法

    GDB(GNU Debugger)是GNU项目提供的一款强大的源代码级调试工具,广泛应用于Unix和类Unix操作系统中,如Linux和...因此,无论你是经验丰富的老手还是初涉Unix编程的新手,理解并掌握GDB都是提升开发技能的重要步骤。

    packet-broker-nixpkgs:P4数据包代理的Nix包装

    标题 "packet-broker-nixpkgs" 指涉的是一个专为P4数据包代理在Nix包管理环境中创建的软件包。P4(Programming Protocol-Independent Packet Processors)是一种编程语言,允许用户定义网络数据包处理的行为,而...

Global site tag (gtag.js) - Google Analytics