SHELL笔记8

  1. shell的控制结构:条件结构、分支结构、循环结构
  2. if,条件结构
  3. if 表达式
    then 命令表
    [else 命令表]
    fi
    
    可以使用分号将多个命令在一行内进行组合。因此,处于美观和节省空间的考虑,上述格式简写为:
    if 表达式; then
      命令表
    [else 命令表]
    fi
  4. if语句可以无限嵌套
  5. if 表达式
    then 命令表
    [elif 表达式
    then 命令表]
    ... ...
    [else 命令表]
    fi
  6. 可以直接命令表换成一个if条件语句
  7. case结构
  8. case 表达式 in
      模式11[|模式12]...) 命令表1;;
      模式21[|模式22]...) 命令表2;;
      ...
          *) 命令表n;;
    esac
  9. 示例
  10.   1 #! /bin/bash
      2 #filename:a.sh
      3 case $1 in
      4 dir | path) echo "Current path is `pwd`";;
      5 date | time) echo "Today is `date`";;
      6 *) echo "Invalid argument!!"
      7 echo "Enter argument: dir/path/date/time";;
      8 esac
  11. case和if语句一样,可以嵌套
  12. select结构

    select循环结构,可以以一种更简便的方式生成菜单。生成的菜单有编号,在用户输入选择的编号后,可根据用户的选择执行相应的代码。

  13. select 变量 in 列表
    do
      命令表
    done
  14. 列表,是一个由字符串组成的序列。
  15. 使用select结构将会在屏幕上生成一个数字化的菜单,并提示用户进行选择,默认的提示符为#。用户只需要在提示符下输入对应的数字,即可完成选择。
  16. 通常,select总是与case结构一起使用,允许用户在菜单中选择,并基于选择执行相应的命令。
  17. select结构是一种循环,需要使用break命令退出循环,也可以使用exit命令结束脚本。
  18. 示例
  19.   1 #! /bin/bash
      2 #filename:a.sh
      3 echo "---------select one week plan---------"
      4 select N in Mon Tue Wed Thu Fri Sat Sun
      5 do
      6   case $N in
      7   Mon) echo "Monday";;
      8   Tue) echo "Tuesday";;
      9   Wed) echo "Wednesday";;
     10   Thu) echo "Thursday";;
     11   Fri) echo "Friday";;
     12   Sat) echo "Saturday";;
     13   Sun) echo "Sunday";;
     14   *) echo "wrong"
     15       break;;
     16   esac
     17 done
  20. 使用sh a.sh运行脚本时,显示select: not found。 需要使用bash a.sh来运行脚本
  21. # bash a.sh
    ---------select one week plan---------
    1) Mon
    2) Tue
    3) Wed
    4) Thu
    5) Fri
    6) Sat
    7) Sun
    #? 1
    Monday
    #?
  22. while循环
  23. while 表达式
    do
      命令表
    done
  24. while循环可嵌套
  25. 示例
  26.   1 #! /bin/bash
      2 #filename:a.sh
      3 i=1
      4 while [ $i -le 10 ]
      5 do
      6 echo "i=$i"
      7 i=$(($i+1))
      8 done
  27. 注,while后面的[],[后面有空格,]前面有空格,不然会出错。
  28. for循环
  29. for 变量 [ in 列表 ]
    do
      命令表
    done
  30. 示例
  31.   1 #! /bin/bash
      2 #filename:a.sh
      3 for i in 1 2 3 4 5 6
      4 do
      5 echo "i=$i"
      6 i=$(($i+1))
      7 done
  32. 如果省略了“in 列表”,则for会将当前执行脚本中的每个位置参数作为“列表”,一次执行列表中的一个。即“for 变量”隐含表示“for 变量[email protected]”。
  33. 示例(arg,可以是任何名字,不是固定的)
  34.   1 #! /bin/bash
      2 #filename:a.sh
      3 i=1
      4 for arg
      5 do
      6 echo "i=$i,parameters: $arg"
      7 i=$(($i+1))
      8 done
  35. until循环
  36. until是在条件为假时继续执行循环,在条件为真时,停止执行。
  37. until
        命令表1
    test 表达式
    do
        命令表2
    done
  38. 示例
  39.   1 #! /bin/bash
      2 #filename:a.sh
      3 i=1
      4 echo "Please enter the number N:"
      5 read N
      6 until
      7 test $i -ge $N
      8 do
      9 echo "i=$i"
     10 i=$(($i+1))
     11 done
  40. break语句
  41. break语句,可以结束while、for、until或者select等结构的执行,即从结构中跳出。退出循环后,将转到done语句后继续执行。
  42. 如果有多层结构嵌套,还可以在break关键字后面加上数字,指明要跳出的结构的层数。例如,break 2
  43. 示例
  44.   1 #! /bin/bash
      2 #filename:a.sh
      3 i=1
      4 echo "Please enter the number N:"
      5 read N
      6 until
      7 test $i -ge $N
      8 do
      9   if [ $i -le 4 ];then
     10     echo "hello"
     11     i=$(($i+1))
     12   else
     13     echo "i=$i"
     14     echo "world"
     15     break
     16   fi
     17 done
  45. continue语句
  46. continue语句和break用法相同,用来跳过本次循环中剩余的代码。
时间: 2024-10-14 09:35:42

SHELL笔记8的相关文章

【转】Linux shell笔记

由于工作的需要,越来越多的接触到linux系统.最近看了<Linux与Unix Shell>这本书,安装书的章节整理了一些自己认为比较重要的命令,方便以后查阅. No.001 文件安全与权限 1. umask 决定了新建文件的权限 2. 软链接(符号链接) ln -s source_path target_path No.002 find和xargs 1. find pathname -options [-print -exec -ok]    其中exec参数的命令格式: 'command-

Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者

本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变量找到外部命令:把命令提交给内核启动为进程: 编程环境: 流程控制语句: 顺序执行: 循环执行: 选择执行: 条件测试:真.假 $? 命令的状态结果: 0: 真 1-255: 假 过程式的编程语言的元素:变量.流程.函数.数组 变量:局部变量.本地变量.环境变量.位置参数变量.特殊变量 变量: 数值

shell笔记2 tput

shell数组 command_list=( [add]='添加' [del]='删除' [edit]='修改' [query]='查询' ) 取得索引:${!command_list[*]},根据索引提交值,执行对应的操作. 取得长度:${#command_list[*]},根据长度进行遍历,取出所有元素. 打印清单:${command_list[@]} -------------------------------------------- 密码输入时候不显示: echo "请输入密码: &

shell笔记

输出重定向 命令 > 覆盖 命令 >> 追加 错误命令 2>文件 错误命令 2>>文件 ls >> /root/ls.txt lst 2>> /root/ls/ls.txt 2和大于号不能有空格 不管正确错误都保存的格式 命令 >文件 2>&1 命令 >>文件 2>&1 命令 &>文件 命令 &>>文件 命令>>文件1 2>>文件2 正确 错误

SHELL笔记7

变量,为用户提供了一种存储.检索.操作数据的途径. 环境变量.位置变量.预定义的特殊变量.用户自定义变量 环境变量 (1)SHELL环境变量,是一类shell预定义变量,是用于设置系统运行环境的变量,有系统统一命名. 部分环境变量的值由系统设定,部分环境变量的值由用户设定. (2)HOME:用户主目录的全路径名 cd 与cd $HOME等价 (3)PATH:定义了一些目录路径,路径由冒号分隔. 在执行命令或shell脚本时,shell会按PATH变量中设定的顺序搜索这些目录,找到的第一个匹配的命

SHELL笔记3

cal命令:日期显示 cat /proc/meminfo :内存使用情况查询 free命令:内存详细信息查询 arch命令:CPU架构显示 显示当前系统的体系结构,例如: #arch x86_64 cat /proc/cpuinfo:CPU信息显示 cat /proc/modules:查询当前系统被加载模块 Linux系统包含的信息:文件系统,内核模块,硬件信息,启动参数等. proc文件系统:访问系统内核信息 (1) proc不是一个真实的文件系统,不占用外存空间,只是以文件的方式访问Linu

SHELL笔记2

shell类型:Bourne Shell.Bourne Again Shell.C Shell.Korn Shell.Perl shell 用户可以选择自己喜欢的shell(在系统管理员为用户创建账户时指定),在/etc/passwd文件最后一个字段中可以看到用户当前使用的shell的名称 使用grep命令查看/etc/passwd文件,显示当前登陆用户使用的shell,命令格式如下: #grep $LOGNAME /etc/passwd Bourne Again Shell, 就是Bash,是

SHELL笔记9

文件类型:普通文件.目录文件.套接字文件.设备文件.链接文件 判断一个文件是否是符号链接文件.是,将其移动到/etc目录下:不是,不做处理.   1 #! /bin/bash   2 #filename:a.sh   3 FILENAME=   4 echo "Input file name: "   5 read FILENAME   6 if [ -L $FILENAME ]   7 then   8   mv $FILENAME /etc   9 fi 设计一个shell程序,给

shell笔记:移动文件

1.编写个shell脚本将当前目录下大于10K的文件转移到当前目录下的tmp文件夹中 #/bin/sh #Programm :1.sh # Using for move currently directory to /tmp #首先一定要注意,in后面的符号不是单引号,而是~键下面那个符号 #!/^d/ 表示当前的文件夹文件,不要移动,即开头是d的那一行 #!/.sh$/ 结尾是.sh的文件不要移动,脚本文件也在这个目录,也不要移动哦 for FileName in `ls -l | awk '