当前位置: 首页 > article >正文

Linux操作系统使用及C高级编程-D6-D8Linux shell脚本

利用shell命令写的脚本文件,后缀是.sh

shell脚本是一个解释型语言,不需要编译,可直接执行

书写:vi test.sh

#!/bin/bash:说明使用的是/bin目录下的bash

说明完后即可编写脚本文件

bash test.sh:运行文件

source test.sh:运行文件

./test.sh:运行文件

注意下图报错,因为没有执行权限,可使用chmod修改权限直接777最高权限

脚本变量

存放系统和用户需要使用的特定参数(值)

变量名:使用固定名称,由系统预设用户定义

变量值:能够根据用户设置、系统环境的变化而变化

自定义变量

在终端定义一个变量COUNT,并进行取出使用$

        

也可在代码中使用,特别注意=两端无空格,注释是#

  

若不想用此变量了,可看到在右图中最后打印出空格

取值

双引号:允许通过$符号引用其他变量值

        弱引用,其中的变量应用会被替换为变量值

单引用:进制引用其他变量值,$是为普通字符

        强引用,其中的变量引用不会被替换为变量值,而保持源字符串

反撇号:命令替换,提取命令执行后的输出结果,"和$(...)作用相同"

11反撇号:给其他变量赋值(反撇号是`),12相同功能

 ​​​​​​​​​​​​​​

数组

 

 

包含第二个元素,再往后一共打印3个元素

 只读变量

不可更改,不可删除

 位置变量和预定义变量

注意:$#统计参数个数,其中的./test2.sh未参与到统计中

 环境变量

Shell语句

 ​​​​​​​打印提示

​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 执行三秒,若未输入就退出:​​​​​​​​​​​​​​

 输入不显示

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 这里就是需要特备注意空格在哪里​​​​​​​​​​​​​​​​​​​​​,一个是等号两端没有,一个是+两端都有

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 

在使用-n -z时,有时候结果正确,有时候错误,11最好加上""这样能特别明确的知道要取的是val1值,7行同样也是

 ​​​​​​​​​​​​​​​​​​​​​

 

 

 分支语句、循环语句

分支语句

 test命令也可使用[]代替,并且注意[]里两边都有空格

 判断用户是否存在,如果存在,打印存在,如果不存在,打印不存在

        使用到grep语句查找grep "^linux:" /etc/passwd,此时只查找到第一个linux

        所以判断用户存不存在,就是统计是否打印了,结合管道wc -l判断打印了几行

 而当要是想要输入y也是可以的话,也可以如6行这样:

 或的操作是:-o,下面表示大于100,小于0

与:-a

非:!

也可以这样:

29行 *)表示剩余情况

 循环语句

 使用for循环挨个打印当前文件​​​​​​​

打印输入参数

$*和$@都表示所有的参数,区别是,$*加上双引号后是作为一个整体进行一次性打印,而$@还是想上面那样进行打印

C语言方式使用for循环

 

使用while循环打印0~4

 当然同样使用c语言方式也可以

 

 ​​​​​​​

 Shell函数

 

5行的$1是获取10行的linux输入

 

加了local就是局部变量,否则函数体内部的都是全局变量

 

 而若是使用了命令置换的方式,全局变量val就无法使用了,这里需要注意

 


http://www.kler.cn/news/136315.html

相关文章:

  • JSON.stringify用法
  • 手把手教你安装最强文生图工具ComfyUI
  • 【linux故障处理】【Failed to restart nginx.service: Unit not found.】
  • 一个可以调节笔记本亮度的程序
  • Java基础第五天(实训学习整理资料(五)练习题)
  • HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程
  • Pandas数据集的合并与连接merge()方法_Python数据分析与可视化
  • Linux网络配置,常用命令及远程工具
  • css旋转代码
  • xlua源码分析(三)C#访问lua的映射
  • Git常用基本指令学习
  • 数据结构 并查集
  • 11.16~11.19绘制图表,导入EXCEL中数据,进行拟合
  • 一道简单的积分题目
  • 【机器学习】036_权重衰退
  • B Label, BL Label 指令
  • 基于安卓android微信小程序美容理发店预约系统app
  • 工具及方法 - 多邻国: Duolingo
  • LeetCode第七题整数反转
  • 什么是一阶逻辑?
  • 数据结构【DS】图的遍历
  • 2311rust,到66版本更新
  • 简单模拟 Spring 创建的动态代理类(解释一种@Transactional事务失效的场景)
  • 使ros1和ros2的bag一直互通
  • Go解析soap数据和修改其中数据
  • MR素数测试及 pycryptodome库下 已知MR伪素数以及强伪证 生成指定伪随机数生成器绕过素性检测