linux shell 编程

shell的作用

  • shell是用户和系统内核之间的接口程序
  • shell是命令解释器

shell程序

Shell程序的特点及用途:

  • shell程序可以认为是将shell命令按照控制结构组织到一个文本文件中,批量的交给shell去执行

  • 不同的shell解释器使用不同的shell命令语法

  • shell程序解释执行,不生成可以执行的二进制文件

  • 可以帮助用户完成特定的任务,提高使用、维护系统的效率

  • Shell使用解释型语言,不需重新编译

  • 它适合于编写执行相对简单的任务的工具,因为它更强调易于配置、维护和可移植性

  • 它不适合用来完成时间紧迫型和处理器忙碌型的任务
    image.png

变量

变量是弱类型的

  1. 声明变量不用声明类型
  2. 可以存储不同类型的内容
  3. 大小写区分

变量声明及赋值格式

格式:变量=值 (注意:等号两侧不能有空格)
例如:

  • a=”hello world”
  • a=hello world
  • b=9

变量的引用
格式:

  1. $变量名
  2. ${变量名}

变量名为一个字符用方式1,变量名多于一个字符建议用方式2
例子:

  • a=1
  • abc=“hello”
  • echo $a
  • echo ${abc}
  1. 如果字符串里包含空格,就必须用引号把它们括起来
  2. 等号两边不能有空格!!!
  3. 默认情况下,所有输入的内容都是字符串

单引号,双引号,倒引号

  • 倒引号括起来的字符串被shell解释为命令行,在执行时shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分

  • 由单引号括起来的字符都作为普通字符出现

  • 如果在参数中包含一个或多个空白字符,必须给参数加双引号。如果把一个带有$字符的变量放在双引号中,程序执行到该行时会把变量替换为它的值.

可用\字符取消$ 的特殊含义 \ $

位置变量

bash在解释用户命令时,会把所输入的命令后面的参数使用位置变量传递给bash脚本程序
$1、$2…$n分别代表参数1、参数2…参数n

$0则代表脚本的名字

有关位置变量还有另外三个。

  • $*:这个变量包括参数的列表(字符串)。
  • $@:这个变量包括参数的列表(数组)。
  • $#:这个变量包括参数的个数。

image.png

环境变量

Shell运行时自动设置的一些变量称为环境变量,由Shell维护和管理。

image.png

只在shell程序中可用的变量

image.png

数学表达式

image.png

image.png

条件判断

常见的条件:

  • 变量属性;

image.png
image.png
image.png

  • 文件属性;

image.png

  • 命令执行结果;
  • 多种条件的逻辑组合;
    判断结果的一般定义:
  • 真:0
  • 假:1
    格式:
  • test condition
  • [ condition ] #[右边和]左边需要有空格

控制结构

常见分支结构:

  • if
#!/bin/bash
echo -n "Please input a directory:”
read dir
if cd ${dir} > /dev/null 2>&1;then
echo "enter directory $dir successed”
else
echo "enter directory $dir failed”
fi

Linux系统里执行的每一个程序都有标准输入/标准输出/错误输出三个通道。
Linux所有的设备都是以文件的形式出现,因此,这里提到的三个通道,实际上就是三个文件。

  • 文件描述符 0 : 标准输入
  • 文件描述符 1 : 标准输出
  • 文件描述符 2 : 错误输出

find / -name "cd" 1> stdout.txt 2> errout.txt

&:取地址

> /dev/null 等价于1>/dev/null把标准输出的内容输出到垃圾箱

2 > &1 把错误输出的内容输出到标准输出的地址

  • case
    image.png
    模式的匹配可以使用通配符
  • ?:仅匹配一个字符
  • *:匹配任意字符
  • […]:配置方括号中的任意一个字符
  • [!..] : 不匹配方括号中的任意字符
  • [a-zA-Z] : -指定一个取值范围

常见循环结构:

  • for
#!/bin/bash
echo "Input a directory:”
read dir
for file in `ls $dir`
do
echo $file
done
  • while
  • until

image.png

image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真实感人故事_您的数据可以告诉您真实故事吗?

真实感人故事Many are passionate about Data Analytics. Many love matplotlib and Seaborn. Many enjoy designing and working on Classifiers. We are quick to grab a data set and launch Jupyter Notebook, import pandas and NumPy and get to work. But wait a minute…

转:防止跨站攻击,安全过滤

转:http://blog.csdn.net/zpf0918/article/details/43952511 Spring MVC防御CSRF、XSS和SQL注入攻击 本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cross site script跨站脚本攻击)。 说说CSRF 对CSRF来说,其实Spring…

Linux c编程

c语言标准 ANSI CPOSIX(提高UNIX程序可移植性)SVID(POSIX的扩展超集)XPG(X/Open可移植性指南)GNU C(唯一能编译Linux内核的编译器) gcc 简介 名称: GNU project C an…

k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

k均值算法 二分k均值算法Have you ever seen a Caribbean reef? Well if you haven’t, prepare yourself.您见过加勒比礁吗? 好吧,如果没有,请做好准备。 Today, we will be answering a question that, at face value, appears quite sim…

新建VUX项目

使用Vue-cli安装Vux2 特别注意配置vux-loader。来自为知笔记(Wiz)

衡量试卷难度信度_我们可以通过数字来衡量语言难度吗?

衡量试卷难度信度Without a doubt, the world is “growing smaller” in terms of our access to people and content from other countries and cultures. Even the COVID-19 pandemic, which has curtailed international travel, has led to increasing virtual interactio…

Linux 题目总结

守护进程的工作就是打开一个端口,并且等待(Listen)进入连接。 如果客户端发起一个连接请求,守护进程就创建(Fork)一个子进程响应这个连接,而主进程继续监听其他的服务请求。 xinetd能够同时监听…

《精通Spring4.X企业应用开发实战》读后感第二章

一、配置Maven\tomcat https://www.cnblogs.com/Miracle-Maker/articles/6476687.html https://www.cnblogs.com/Knowledge-has-no-limit/p/7240585.html 二、创建数据库表 DROP DATABASE IF EXISTS sampledb; CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8; USE sampl…

视图可视化 后台_如何在单视图中可视化复杂的多层主题

视图可视化 后台Sometimes a dataset can tell many stories. Trying to show them all in a single visualization is great, but can be too much of a good thing. How do you avoid information overload without oversimplification?有时数据集可以讲述许多故事。 试图在…

一步一步构建自己的管理系统①

2019独角兽企业重金招聘Python工程师标准>>> 系统肯定要先选一个基础框架。 还算比较熟悉Spring. 就选Spring boot postgres mybatis. 前端用Angular. 开始搭开发环境,开在window上整的。 到时候再放到服务器上。 自己也去整了个小服务器,…

python边玩边学_边听边学数据科学

python边玩边学Podcasts are a fun way to learn new stuff about the topics you like. Podcast hosts have to find a way to explain complex ideas in simple terms because no one would understand them otherwise 🙂 In this article I present a few episod…

react css多个变量_如何使用CSS变量和React上下文创建主题引擎

react css多个变量CSS variables are really cool. You can use them for a lot of things, like applying themes in your application with ease. CSS变量真的很棒。 您可以将它们用于很多事情,例如轻松地在应用程序中应用主题。 In this tutorial Ill show you …

vue 自定义 移动端筛选条件

1.创建组件 components/FilterBar/FilterBar.vue <template><div class"filterbar" :style"{top: top px}"><div class"container"><div class"row"><divclass"col":class"{selected: ind…

PPPOE拨号上网流程及密码窃取具体实现

楼主学生党一枚&#xff0c;最近研究netkeeper有些许心得。 关于netkeeper是调用windows的rasdial来进行上网的东西&#xff0c;网上已经有一大堆&#xff0c;我就不赘述了。 本文主要讲解rasdial的部分核心过程&#xff0c;以及我们可以利用它来干些什么。 netkeeper中rasdial…

新购阿里云服务器ECS创建之后无法ssh连接的问题处理

作者&#xff1a;13 GitHub&#xff1a;https://github.com/ZHENFENG13 版权声明&#xff1a;本文为原创文章&#xff0c;未经允许不得转载。 问题描述 由于原服务器将要到期&#xff0c;因此趁着阿里云搞促销活动重新购买了一台ECS服务器&#xff0c;但是在初始化并启动后却无…

边缘计算 ai_在边缘探索AI!

边缘计算 ai介绍 (Introduction) What is Edge (or Fog) Computing?什么是边缘(或雾)计算&#xff1f; Gartner defines edge computing as: “a part of a distributed computing topology in which information processing is located close to the edge — where things a…

初识spring-boot

使用Spring或者SpringMVC的话依然有许多东西需要我们进行配置&#xff0c;这样不仅徒增工作量而且在跨平台部署时容易出问题。 使用Spring Boot可以让我们快速创建一个基于Spring的项目&#xff0c;而让这个Spring项目跑起来我们只需要很少的配置就可以了。Spring Boot主要有如…

leetcode 879. 盈利计划(dp)

这是我参与更文挑战的第9天 &#xff0c;活动详情查看更文挑战 题目 集团里有 n 名员工&#xff0c;他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润&#xff0c;它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作&#xff0c;就不能…

区块链101:区块链的应用和用例是什么?

区块链技术是一场记录系统的革命。 比特币是历史上第一个永久的、分散的、全球性的、无信任的记录分类帐。自其发明以来&#xff0c;世界各地各行各业的企业家都开始明白这一发展的意义。 区块链技术的本质让人联想到疯狂&#xff0c;因为这个想法现在可以应用到任何值得信赖的…

如何建立搜索引擎_如何建立搜寻引擎

如何建立搜索引擎This article outlines one of the most important search algorithms used today and demonstrates how to implement it in Python in just a few lines of code.本文概述了当今使用的最重要的搜索算法之一&#xff0c;并演示了如何仅用几行代码就可以在Pyth…