shell的作用

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

shell程序

Shell程序的特点及用途:

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

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

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

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

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

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

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

变量

变量是弱类型的

  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则代表脚本的名字

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

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

环境变量

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

只在shell程序中可用的变量

数学表达式

条件判断

常见的条件:

  • 变量属性;



  • 文件属性;

  • 命令执行结果;
  • 多种条件的逻辑组合;
    判断结果的一般定义:
  • 真: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

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

常见循环结构:

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


linux shell 编程相关推荐

  1. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  2. linux实验三shell程序设计,实验三 LINUX SHELL编程

    精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...

  3. linux —— shell 编程(文本处理)

    导读 本文为博文 linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed a ...

  4. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  5. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

  6. linux简单重定向代码,Linux Shell编程(26)——代码块重定向

    像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...

  7. Linux Shell编程语句case

    Linux Shell编程case语句 case语句 case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下:case $变量名 in模式1)命令序列1;;模式2)命令序列2;; ...

  8. linux shell 处理日语,linux —— shell 编程(文本处理)

    导读 本文为博文linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 1.基本文本处理 sort:用于排序,常 ...

  9. linux怎么退出shell编程,Linux Shell编程(11)——退出和退出状态

    exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程. 每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零 ...

  10. 「Linux」Linux Shell 编程基础入门

    Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...

最新文章

  1. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
  2. 每三个数换行 用C语言表示,关于换行符:使用fscanf()读取每行3个数字的文件,为什么“%d%d%d%* c”和“%d%d%d”一样好?...
  3. SAP 移动类型详解
  4. 简单易上手的Bootstrap
  5. 【击败时间100%】剑指 Offer 38. 字符串的排列
  6. 如何给SAP Cloud ConnectorRegion列表中添加新的Region
  7. LeetCode-108将有序数组转换为二叉搜索树
  8. lucene5 排序
  9. WinRAR备份技巧 - imsoft.cnblogs
  10. 计算机局域网中处理器可以共享么,局域网中怎么设置可共享主机的应用程序及CPU资源。...
  11. python画一棵树的心理测试_心理测验:空白纸上画棵树,破除心防从这里开始
  12. QQ通信原理及QQ是怎么穿透内网进行通信的?
  13. TTime::FormatL 详解
  14. git分支代码提交主干
  15. python随机生成一个数字_如何实现python随机生成数字?
  16. 微信预览wx.previewImage黑屏
  17. 吴恩达机器学习ex2 Logistic Regression (python)
  18. Spark DataFrame 写入HIve 出现HiveFileFormat`. It doesn't match the specified format `ParquetFileFormat`
  19. ObjectARX 常见编译错误解决方式记录
  20. flutter图片上传

热门文章

  1. arm-linux-gcc静态编译和动态编译的区别
  2. 读过的最好的epoll讲解
  3. libevent学习笔记 一、基础知识
  4. java高分面试指南:javamvc模式简单案例
  5. Mysql案例5:取得平均薪资最高的部门的部门名称
  6. [Objective-C语言教程]结构体(17)
  7. Codeforces 408D Long Path (DP)
  8. 感想3-对于业务逻辑复用、模板复用的一些思考(未完)
  9. React JS 组件间沟通的一些方法
  10. spring自动注入--------