首页 > 系统相关 >linux 第10章

linux 第10章

时间:2023-09-24 18:45:17浏览次数:27  
标签:语句 10 脚本 命令 sh linux 执行 变量

sh编程
sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句,所有的sh基本都执行相同的任务,脚本在语法上略有不同,shebang允许允许主sh调用适当版本的sh来执行脚本。如果未指定shebang,默认执行sh,即下列程序的第一行。

例:创建一个一个文本文件mysh,包含:

! /bin/bash //sh第一行通常以#!开始,通常称为shebang

//当bash执行mysh脚本时,将会打印hello

comment line

echo hello

使用chmod +x mysh使其可执行。然后运行mysh。

当主sh见到shebang时,读取脚本所针对的程序名并调用该程序

sh脚本与C程序的区别
sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行,如果行是可执行命令且为内置命令,那么sh可直接执行。否则,复制一个子进程来执行命令,等待子进程终止后再继续,这与它执行单个命令行完全一样。

其次,sh脚本中每个变量都是字符串,不需要类型;

sh脚本不需要 main()函数,第一个可执行语句就是程序的入口点。

C程序必须先编译链接到一个二进制可执行文件,然后通过sh子进程运行可执行的二进制文件。

其次,C程序中,每个变量必须有一个类型。

C语言必须有 main()函数。

命令行参数
可使用与运行sh命令完全相同的参数调用sh脚本:

mysh one two three

在sh脚本中可以通过0−0−{n}访问命令行参数,其中需要注意的是:后10个参数必须被称为{$x},x>10。

命令行参数:

= 命令行参数1到1到n的数量 * = 所有命令行参数,包括00S = 执行sh的进程PID $? = 最后一个命令执行的退出状态(若成功为0,否则为非0)

sh变量
sh内置变量:PATH、HOME、TEAM......

用户自定义变量:可以使用任何符号作为sh变量,不需要声明。所有sh变量都是字符串。未赋值的sh变量是NULL字符串。

sh中的引号
sh有许多特殊字符,如$、/、*、>、<

用作普通字符时:使用 \ 或者单引号来引用他们。

单双引号的区别:
单引号内没有替换;

双引号用于保留双引号字符串中的空格,且会发生替换;

sh命令
.file :读取并执行文件。

break [n]:从最近的第 n 个嵌套循环中退出。

cd [dirname]:更换目录。

continue [n]:重启最近的第 n 个嵌套循环。

eval [arg...]:计算一次参数并让sh执行生成的命令。

exec [arg...]:通过这个 sh 执行命令, sh 将会退出。

exit[n]:使 sh 退出,退出状态为 n 。

export [var...]:将变量导出到随后执行的命令。

read [var...]:从 stdin 中读取一行并为变量赋值。

set [arg...]:在执行环境中设置变量。

shift :将位置参数223...重命名为112...

trap [arg[n]:接收到信号 n 后执行参数。

umask [ ddd ]:将掩码设置为八进制数 ddd 的。

wait [pid];等待进程 pid ,如果没有给出 pid ,则等待所有活动子进程。

read 命令:当 sh 执行 read 命令时,它会等待来自 stdin 的输入行。它将输人行划分为几个标记,分配给列出的变量。

在获得read的输入后,sh可能会测试输入的字符串,以决定下一步做什么

Linux命令
echo:将参数字符串作为行回显到stdout,通常将多个空格压缩为一个(除非有引号);

expr:用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串;

expr的运行方式:

expr string1 OP string2

首先将两个参数字符串转换为数字,然后对数字执行二进制操作OP,再将得到的数字转换回字符串。

管道命令
在sh脚本中经常使用管道作为过滤器。

实用命令
awk:数据处理程序;

cmp:比较两个文件;

comm:选择两个排序文件共有的行;

grep:匹配一系列文件的模式;

diff:找出两个文件的差异;

join:通过使用相同的键来连接记录以比较两个文件;

sed:流或行编辑命令;sort:排序或合并文件;

tail:打印某个文件的最后n行;

tr:一对一字符翻译;

uniq:从文件中删除连续重复行。

命令替换
当sh遇到'cmd'或$(cmd)时,会优先执行cmd,并用执行结果字符串替换cmd。

sh控制语句
sh是一种编程语言,支持许多执行行控制语句;

在sh上每个语句需要单独在一行上,若用分号将多个语句隔开,则运行多个语句在同一行;

在sh中0为TRUE。这是因为当sh执行命令时,它会获得命令执行的退出状态,执行成功则为0,否则非0。

I/O重定向
进入sh命令时,我们可以指示sh将I/O重定向到除默认stdin、stdout和sterr以外的文件。

sh中的通配符
*通配符:可扩展到当前目录中的所有文件

file *:列出当前目录中所有文件的信息

ls *.c:列出当前目录中所有以.c结尾的文件

?通配符:查询某文件名中的字符

file ???:有三个字符的所有文件名

ls *.??:点号后有2个字符的所有文件名

[]通配符:查询文件名中一对[]中的字符

file [ab]:包含字符a或b的所有文件名

ls [xyz]:列出所有包含x、y或z的文件名

ls [a-m]:列出包含a到m范围内字符的所有文件名

命令分组
在sh脚本中,可以用{}或()对命令进行分组。

eval语句
eval [arg1 arg1 ...argn]
eval是sh的一个内置命令。由sh自己执行,不需要复制新进程。

它将输入参数字符串连接到一个字符串中,计算一次,即执行变量和命令替换,然后给出结果字符供sh执行。

调试sh脚本
sh脚本可由带有 -x 选项的子sh运行,以进行调试,如
bash -x mysh
子sh可以将在执行命令之前显示要执行的每个sh命令,包括变量和命令替换。允许用户跟踪命令执行。
出错,sh将在错误行上停止并显示错误信息。

大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?
一门程序设计语言的必备要素和技能包括以下几个方面:

  1. 语法规则:了解语言的基本语法规则,包括变量声明、赋值、条件语句、循环语句、函数定义等。掌握语言的语法是编写有效代码的基础。
  2. 数据类型:了解不同的数据类型及其特点,包括整数、浮点数、字符、字符串、数组、结构体等。了解如何声明和使用不同的数据类型,以及类型转换的方法。
  3. 控制结构:掌握条件语句(如if-else语句、switch语句)和循环语句(如for循环、while循环)的使用,能够根据不同的条件执行不同的代码块。
  4. 函数和模块化编程:掌握函数的定义和调用,了解函数的参数传递和返回值的使用。能够将代码模块化,实现代码的复用和结构化。
  5. 数据结构和算法:了解常见的数据结构(如数组、链表、栈、队列、树、图等)和基本的算法(如排序、查找、递归等),能够根据问题的需求选择合适的数据结构和算法进行编程。
    在shell脚本中,这些要素和技能也是需要的,只是在语法和用法上会有所区别:
  6. 语法规则:shell脚本也有自己的语法规则,包括变量的声明和赋值、条件判断、循环语句、函数定义等。需要了解shell脚本的语法规则并正确使用。
  7. 命令和参数:shell脚本中常用的是各种命令和参数,掌握常用的shell命令和参数的使用方法,如文件操作、文本处理、流程控制等。
  8. 变量和环境变量:shell脚本中使用变量来存储和操作数据,了解如何声明和使用变量,以及如何使用环境变量。
  9. 条件判断和循环语句:掌握shell脚本中的条件判断语句(如if-else语句、case语句)和循环语句(如for循环、while循环),能够根据条件执行不同的代码块或循环执行代码。
  10. 函数和脚本模块化:了解shell脚本中函数的定义和调用,能够将代码模块化,实现代码的复用和结构化。
    总之,无论是在C语言还是shell脚本中,掌握基本的编程要素和技能,能够正确运用语法规则和掌握常用的编程结构,都是编写有效代码的基础。

![](/i/l/?n=23&i=blog/3279722/202309/3279722-20230924181121095-229039760.png








标签:语句,10,脚本,命令,sh,linux,执行,变量
From: https://www.cnblogs.com/nql2/p/17726399.html

相关文章

  • Linux第一次周总结
    第一章 初识Linux1.Linux简介Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是......
  • 109_博客搭建进阶篇
    这是一篇原发布于2020-01-1709:43:00得益小站的文章,备份在此处。前言本文接《0基础小白向博客搭建指南》[postcid="18"/]本文均以阿里云举例更改面板端口相信大家登录面板的时候都看到了这个提示,为了我们服务器的安全我们还是要把宝塔端口改一下。1.打开阿里云云服务的......
  • 第三周Linux教材第十章学习笔记——sh编程
    第十章——sh编程sh脚本1.sh脚本是一种为shell编写的脚本程序。这个程序用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能。第一行必须为#!/bin/sh2.命令行使用chmod+x <filename>编译后才能用./filename来运行。3.......
  • 104_typecho插入B站(iframe)视频填坑
    这是一篇原发布于2020-01-1114:07:00得益小站的文章,备份在此处。前言B站默认给的插入代码不好用,这里收集了几个解决方案。B站链接参数来源:https://blog.csdn.net/xinshou_caizhu/article/details/94028606https://player.bilibili.com/player.html?aid=83006718&cid=1420034......
  • 194_win7_10任务栏合并但不隐藏标签
    这是一篇原发布于2020-01-2310:28:00得益小站的文章,备份在此处。前言我们都知道Windows的任务栏有个合并、隐藏标签的功能。但Windows提供的三个选项中,就是少了一个不合并但隐藏标签的选项,本文就来解决这个问题。不想看原理,只想快速解决的同学,可以翻到最后,有一键设置的方法。......
  • 306_在?你的Win10有历史剪贴板功能吗?
    这是一篇原发布于2020-01-3013:24:00得益小站的文章,备份在此处。前言剪贴板可谓是我们日常使用数码产品时,经常在用的一个功能,看到好的内容,复制、粘贴,一气呵成,岂不快哉?而我们常用的大部分手机输入法都提供了历史剪贴板这个功能。而当我们回到电脑上工作时,好像发现这些输入法......
  • 更改Win10桌面文件路径,给系统盘瘦身
    1、首先我们需要在F磁盘中创建一个名叫“桌面”的文件夹,具体效果如下图所示。2、然后进入此电脑,再进入系统盘,进入“用户”的文件夹,再进入“系统的账户名”(其实就是本机的用户名),这时我们可以看到“桌面”的图标,我们右键点击“桌面”,选择“属性”菜单,具体如下图所示。3、在桌面属性的......
  • Linux是什么?它与Windows有什么区别?
    前言本文将讲解Linux是什么、它的应用领域、未来、优缺点以及它与Windows的区别。一、Linux是什么?Linux是一种自由的、开放源码的类Unix操作系统。目前存在着许多不同的Linux系统,但它们都使用了Linux内核。Linux可安装在各种计算机设备中,从手机、平板电脑、路由器和视频游戏控制台,......
  • linux 中 conda配置文件 .condarc
     001、.condarc存在于个人用户的家目录下,在初次安装完conda并不会生成,在运行完condaconfig后才会生成(base)[root@pc1~]#cd~##回到用户个人家目录(base)[root@pc1~]#ls##列出文件anaconda3DesktopDownloads......
  • Linux操作系统学习
    当今互联网时代,Linux操作系统凭借其高度的自由度、可靠性和安全性,已经成为网络世界的重要组成部分。作为最受欢迎的Linux发行版之一,CentOS在企业和个人用户中广受好评。本篇博客将向大家介绍本人在CentOS操作系统所学到的一些基础知识和常用命令。CentOS是CommunityEnterpriseO......