• shell编程(二)


    case判断

    前面了解了shell编程的if判断,其实除了if判断,还有case判断。

    case语法:

    case VAR in 

    case1) command1 ;;

    case2) command2 ;;

    case3) command3 ;;

    ...

    *) command ;;

    esac

    循环

    除了判断,大家知道循环也是程序中很重要的一环,那么shell里面的循环是什么样的呢?

    带列表的for循环

    和python中类似,此类for循环语法结构为

    for var in list:

    do

        command

    done

    list可以是一串字符,程序会按照空格分隔成多个单词的列表

     list也可以是1,2,3,4,5这样的数字

    也可以是某个命令执行后的结果:

    类C语言的for循环

    语法:

    for ((expression1;condition;expression2))

    do

        command

    done

    这种情况和C语言的for循环类似,只是有两个小括号。例如

    好,说到这里,我们又可以做一个经典的问题了:打印出9X9乘法口诀表

    其中echo -e 表示开启转义  c 表示不换行 表示换行。

    上面这幅图应该让大家知道有什么作用了。

    我们看打印的乘法口诀,发现有点没有对齐,这对强迫症来说,可能无法忍受,怎么办呢?其实在shell中,我们除了echo可以打印之外,还可以用printf 这种C语言的打印方法

    大家发现没有 printf默认没有换行,这就很不爽了。我们可以在打印末尾加上

    和其他语言一样,我们可以在%s这里设置字符串的宽度、左右对齐方式等

    前面负号表示左对齐,8表示一个占多少格,后面的.4表示要展示多少位,小数点也算一位

    好,现在我们再改良一下我们的乘法口诀

    while循环

    基本用法:

    while expression

    do

      command

    done

    另外,while循环还可以用来读取文件

    awk指令的作用后面会说。

    上面的while循环这样写也是OK的

    <  表示重定向输入,就是把test.sh当作前面指令的输入。

    select循环

    select循环是一种菜单扩展循环,语法和带列表的for类似,常和case一起连用

    语法规则:

    select menu in list

    do

        command

    done

    其中 &&表示接着执行后面的语句 exit 1表示退出脚本,如果是break,就是退出循环,continue指跳过本轮循环,继续执行。

    函数

    Shell中的相比于Python的函数,要简单很多,同时功能也就简单很多

    函数定义语法

    #funciton为关键字,可以省略
    function FUNCTION_NAME(){
        command1 #函数体中可以有多个语句,不允许函数内部为空
        command2
        ……
    }

    Shell中的向函数传递参数是通过位置参数来实现的

    函数的作用就是减少重复代码,因此我们需要建立自己的函数库

    新建一个Shell脚本,专门用来存放自定义的函数,一般作为函数库里面的函数以下划线开头,以便区分


    通过source 或者 . 都可以导入函数库

     

    重定向


    之前我们都用echo来输出,但是如果我们想把输出内容保存到文件中该怎么做呢?

    >

    标准输出覆盖重定向:将命令的输出,重定向输出到其他的文件当中

    >>

    标准输出追加重定向:将命令的输出,重定向追加到其他文件末尾

    <

    标准输入重定向:命令将从指定的文件中读取输入而不是键盘输入

    命令说明
    command > file 将输出重定向到 file。
    command < file 将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file 将文件描述符为 n 的文件重定向到 file。
    n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m 将输出文件 m 和 n 合并。
    n <& m 将输入文件 m 和 n 合并。
    << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

  • 相关阅读:
    tomcat窗口修改显示名字
    Windows Server 2012 安装oracle11g
    oracle查看和修改session和最大连接数
    ORA-12518 TNS:监听程序无法分发客户机连接的解决办法
    Oracle数据导入导出imp/exp :未知的命令开头。。。忽略了剩余的行
    用Dev C++编写第一个C语言程序
    PAT 甲级 1045 Favorite Color Stripe (30 分)(思维dp,最长有序子序列)
    PAT 甲级 1043 Is It a Binary Search Tree (25 分)(链表建树前序后序遍历)*不会用链表建树 *看不懂题...
    PAT 甲级 1044 Shopping in Mars (25 分)(滑动窗口,尺取法,也可二分)
    数据库设计的基本步骤
  • 原文地址:https://www.cnblogs.com/woaixuexi9999/p/9452225.html
Copyright © 2020-2023  润新知