Linux 收官

编程基础

10.1.1 Shell 程序:Hello World

vi hello.sh 编写程序 i 开始编辑

echo 在显示器上显示

程序解析:在屏幕上显示 Hello World

存盘退出:Esc Shift+:wq

执行方式:

  1. bash hello.sh  //直接执行

  2. chmod u+x hello.sh  //赋予可执行权限

    ./hello.sh  //执行当前目录下的hello.sh命令

10.1.2 Bash 脚本语言介绍

#!/bin/bash 程序解释器/bin/bash

10.1.3 结构和基本语法

#!/bin/bash 程序注释器 (此脚本使用bin/bash来解释执行)

#!是一个特殊的表示符 其后跟着解释此脚本的shell路径

bash只是shell的一种 还有很多其它shell 如:sh csh ksh tcsh...

关于#!/bin/bash

#!/bin/bash只能放在第一行 如果后面还有#! 那么只能看成是注释 都是可执行语句 即程序体

程序体可能包括三类结构的语句:顺序结构 分支结构 循环结构

10.1.4 变量

vi array-var.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

定义一个包括5个元素的一维数组users=(zsan lisi "wanger" mazda "xiaoyu")

在屏幕上显示 数组元素users【0】的值

在屏幕上显示 数组元素users【2】的值

在屏幕上显示 数组中全部元素的值

在屏幕上显示 数组元素的个数

在屏幕上显示 数组元素users【2】值的长度

在屏幕上显示 当前进程的进程号 即PID

在屏幕上显示 前一个命令的退出状态 0表示成功 1表示失败

在屏幕上显示 命令行参数的个数

在屏幕上显示 保存了的全部的命令行的参数

执行方式:

天冷加衣

10.1.5 控制语句

顺序结构体

vi proc.bash 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

切换当前目录到 Ben1

删除所有以.txt结尾的文件

在屏幕上显示 Well down 

* 在Linux中表示通配符(通配任何字符)

执行方式:

vi example1.sh 编写程序 i 开始编辑

PS:j=`expr $i + 1`中的` `不是单引号 而是 

expr命令可以实现数值运算 数值或字符串比较 字符串匹配 字符串提取 字符串长度计算等功能 它还具有几个特殊功能 判断变量或参数是否为整数 是否为空 是否为0等

程序解析:程序解释器/bin/bash

定义整型变量i 并赋值1

定义字符串变量abc 并赋值Hello World

在屏幕上显示 变量abc的值 Hello World

变量 i加1 并赋值给 j 变量

在屏幕上显示 j 的值

重新定义变量abc 赋值100

在屏幕上显示 abc的值

执行方式:

vi serial.sh 编写程序 i 开始编辑

"./":代表目前所在的目录

" . ./"代表上一层目录

"/":代表根目录

程序解析:程序解释器/bin/bash

创建一个目录ben2

切换当前目录到 ben2

把文件/etc/*.conf复制到当前目录下

如果conf.tar.bz2事先存在 就把它的修改时间改为现在的系统时间 如果不存在就创建一个空文件

把文件/etc/*.conf复制到上一层目录下

删除*.conf文件

执行方式:

分支结构体

if语句

vi ifexam1.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

如果UID=0 即超级用户 那么

在屏幕上显示 Normal users

否则

在屏幕上显示 Root users

if语句结束

执行方式:

vi ifexam2.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

如果存在目录./123 那么

进入目录./123

把文件/etc/passwd复制到当前目录下

如果存在文件./123 那么

删除文件./123

否则

创建目录./123

if语句结束

执行方式:

当文件./123存在时 执行命令 bash ifexam2.sh ./123被删除 再次执行命令 ./123出现

case语句

vi case1.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

判断命令行第一个参数的值 如命令行输入命令:./case1.sh 1 hel -g a 那么 $0=./case1.sh  $1=1 $2=hel $3=-g $4=a

如果$1是一个数字 那么显示digital

如果$1是一个小写字母 那么显示lower char

如果$1是一个大写字母 那么显示upper char

如果$1等于good 那么显示OK

否则 进入./ben1目录

并显示others

case语句结束

执行方式:

如何查看(显示)Linux默认的SHELL:

vi case2.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

判断命令行第一个参数的值 如命令行输入命令:./case1.sh 1 hel -g a 那么 $0=./case1.sh  $1=1 $2=hel $3=-g $4=a

如果$1等于lisi 那么显示clever girl

如果$1等于wuhan 那么显示stronger boy

如果$1等于zhangmin 那么显示he comes from chengdu

如果$1等于wanghua 那么显示she is a student

如果$1等于chenben 那么显示he is a teather

否则 在屏幕上显示we don`t know this person

case语句结束

执行方式:

循环结构

for语句

vi for1.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

变量 i 从左至右依次赋 in 后面的值 

每赋值一次 就执行一次for循环 直到赋值完毕

在屏幕上显示循环的次数 共循环6次

for语句结束

执行方式:

  1. bash hello.sh  //直接执行

  2. chmod u+x hello.sh  //赋予可执行权限

    ./hello.sh  //执行当前目录下的hello.sh命令

一 二使用变量实现

三使用表达式实现

vi for2.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

变量 name 从左至右依次赋 in 后面的值 

每赋值一次 就执行一次for循环 直到赋值完毕

在屏幕上显示 Nice to see you, welcom $name

在屏幕上显示 $name, thank you very much for your help

在屏幕上显示 See you later, $name!

for语句结束

执行方式:

vi for3.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

for循环 判断文件是否在当前目录中

若在 do 

如果是一个文件 将所有文件名增加.old拓展名

如果是一个目录 将所有目录增加.cp后缀名 原来的目录仍然保持

for循环结束

执行方式:

vi for4.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

定义整型变量total 初始值为1

i=1开始 i<10 累加1

计算0~10全部奇数的乘积

for循环结束

在屏幕上显示变量 $total的值

执行方式:

vi char.c 编写程序 i 开始编辑

程序解析:编译预处理指令

定义主函数 有且仅有一个主函数

输出 This is a C program.

执行方式:

无法直接执行./char.c

使用命令gcc -o ccc char.c编译 产生一个可执行的ccc

再执行命令./ccc

.

vi while1.sh编写程序 i 开始编辑

程序解析:程序解释器/etc/bash

通过管道循环读取/etc/passwd内容

以:为分隔符 只读取第一个字段 

在屏幕上显示 用户名

 执行方式:

vi while2.sh 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

定义整型变量total 初始值为0

读一行

累加1

显示/etc/passwd文件内容并作为while命令的输入(输入重定向)

显示变量total的值

执行方式:

vi char.c 编写程序 i 开始编辑

程序解析:程序解释器/bin/bash

定义一个字符串 显示SHELL变量SP3的值 并等待用户输入

定义一个菜单 包括com net org edu quit五个选项

每个选项之间用 :隔开

读取用户输入 如果输入的是项前的序号(数字)那么 对应的项被赋给name 否则name被赋null(空)

如果项目在item中 

那么

如果item项在com中 在屏幕上显示 Apply com domain 

如果item项在net中 在屏幕上显示 Apply net domain 

如果item项在org中 在屏幕上显示 Apply org domain 

如果item项在edu中 在屏幕上显示 Apply edu domain 

如果遇到break 则退出

执行方式:

以上内容均为个人观点 如有问题欢迎及时指出
 

所有好运都在路上

雾都不起风

太阳升起时你未曾离开

公众号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值