首页 > 其他分享 >学习笔记3

学习笔记3

时间:2023-09-24 15:57:48浏览次数:26  
标签:word 变量 笔记 学习 命令 sh 参数 变量名

第十章 Sh编程

10.1 sh脚本:

1.sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。
2.sh脚本与C程序
C程序必须先编译链接到一个二进制可执行文件,再通过主sh的子进程运行该二进制可执行文件;sh则可直接执行行命令。
sh脚本不需要main函数。

10.2 sh脚本与C程序

两者虽然部分相似,但根本上是不同的

1.sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行,而c程序必须先编译链接到一个二进制可执行文件,然后在通过主sh的子进程运行二进制可执行文件;

2.sh脚本的每个变量都是字符串,因此不需要变量,而c程序中每个变量都必须有一个类型,包括char、int、float等等;

3.sh脚本不需要main函数,第一个可执行语句是程序的入口,而c程序必须有main()函数。

10.3 命令行参数

$#=命令行参数S1到Sn 的数量

$*=所有命令行参数,包括$0

此外,sh 还有与命令执行相关的以下内置变量。

$S=执行 sh的进程PID

$?=最后一个命令执行的退出状态(如果成功,则为0,否则为非0)

sh中,特殊字符$表示替换,要原样使用的话必须带有单引号或反引号\,例如$

10.4 sh标准

(1)sh定义的环境变量
sh在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的sh环境变量有:

HOME:用于保存注册目录的完全路径名。
PATH:用于保存用冒号分隔的目录路径名,sh将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
TERM:终端的类型。
UID:当前用户的标识符,取值是由数字构成的字符串。
PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。
PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。
PS2:在sh接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时sh判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。
(2)用户定义的变量
用户可以按照下面的语法规则定义自己的变量: 变量名=变量值
要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;
在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。 在编写sh程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。 有时我们想要在说明一个变量并对它设定为一个特定值后就不在改变它的值,这可以用下面的命令来保证一个变量的只读性:
readly 变量名
在任何时候,建立的变量都只是当前sh的局部变量,所以不能被sh运行的其他命令或sh程序所利用,export命令可以将一局部变量提供给sh执行的其他命令使用,其格式为:
export 变量名
也可以在给变量赋值的同时使用export命令: export 变量名=变量值
使用export说明的变量,在sh以后运行的所有命令或程序中都可以访问到。

2.参数置换的变量
sh提供了参数置换能力以便用户可以根据不同的条件来给变量赋不同的值。参数置换的变量有四种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置类决定变量的取值,它们的语法和功能分别如下:
(1)变量=${参数-word}:如果设置了参数,则用参数的值置换变量的值,否则用word置换。即这种变量的值等于某一个参数的值,如果该参数没有设置,则变量就等于word的值。
(2)变量=${参数=word}:如果设置了参数,则用参数的值置换变量的值,否则把变量设置成word然后再用word替换参数的值。注意,位置参数不能用于这种方式,因为在sh程序中不能为位置参数赋值。
(3)变量=${参数?word}:如果设置了参数,则用参数的值置换变量的值,否则就显示word并从sh中退出,如果省略了word,则显示标准信息。这种变量要求一定等于某一个参数的值,如果该参数没有设置,就显示一个信息,然后退出,因此这种方式常用于出错指示。
(4)变量=${参数+word}:如果设置了参数,则用word置换变量,否则不进行置换。 所有这四种形式中的“参数”既可以是位置参数,也可以是另一个变量,只是用位置参数的情况比较多。

10.5 命令

10.5.1 sh 命令
sh包括许多内置命令,不需要创建新进程,一些常用的如下:
file∶读取并执行文件。

● break 【n】∶从最近的第n个嵌套循环中退出。

● cd 【dirname】∶更换目录。

● continue 【n】∶重启最近的第n个嵌套循环。

● eval 【ar …】∶计算一次参数并让 sh执行生成的命令。

● exec 【arg …】∶通过这个sh执行命令,sh将会退出。

● exit 【n】∶使sh退出,退出状态为 n。

● export 【va …】∶将变量导出到随后执行的命令。

● read 【var …】∶从 stdin中读取一行并为变量赋值。

● set 【arg …】∶在执行环境中设置变量。·

● shift∶将位置参数$2 $3…重命名为$1$2…。

● trap 【arg】【n】∶接收到信号n后执行参数。

● umask【ddd】∶将掩码设置为八进制数 ddd 的。

● wait【pid】∶等待进程 pid,如果没有给出 pid,则等待所有活动子进程。

10.9sh控制语句

1.if条件语句
sh程序中的条件分支是通过if条件语句来实现的,其一般格式为:
if 条件命令串 then
条件为真时的命令串
else
条件为假时的命令串
fi

2.for 循环
for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为:
for 变量名 [in 数值列表]
do
若干个命令行
done
变量名可以是用户选择的任何字符串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表。

3.while和until 循环
while 和 until命令都是用命令的返回状态值来控制循环的。
While 循环的一般格式为:
while
若干个命令行1
do 若干个命令行2
done
只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行do...done之间的“若干个命令行2”。
until命令是另一种循环结构,它和while命令相似,其格式如下:
until 若干个命令行1
do
若干个命令行2
done
until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。
sh还提供了true和false两条命令用于建立无限循环结构的需要,它们的返回状态分别是总为0或总为非0

一门程序设计语言有哪些必备的要素和技能?

1,深入并且专注于一种编程语言
2.程序设计语言、程序、编辑、源程序、编译、可执行程序、运行
3.掌握程序中最基本的语法、运算、基本功能。
4.多练习各个分块的学习内容,勤练 多问!

标签:word,变量,笔记,学习,命令,sh,参数,变量名
From: https://www.cnblogs.com/deyong/p/17726065.html

相关文章

  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记3(必做)
    学习笔记3程序设计语言必备要素和技能shell脚本实践过程截图程序设计语言必备要素和技能1.语法和语义:了解语言的基本语法规则和语义,包括如何定义变量、数据类型、运算符、控制结构等。这是编写有效代码的基础。2.数据结构和算法:掌握数据结构(如数组、链表、栈、队列)和基......
  • 《信息安全系统设计与实现》第三周学习笔记
    《信息安全系统设计与实现》第三周学习笔记学习程序设计语言的体会必备的要素和技能在Python,c,java语言中我对于c语言的使用最多,所以我主要从c语言的角度说说我对于程序设计语言的必备的要素和技能。在我看来,学习程序设计语言,需要掌握以下必备要素和技能:语法:了解C语言的......
  • 笔记 | 信号和槽机制
    什么是信号和槽?信号和槽是Qt框架中的两个关键元素,用于对象之间的通信。简而言之,信号是对象发出的事件或消息,而槽是用于响应信号的特殊成员函数。通过将信号与槽连接起来,可以在一个对象发出信号时自动调用另一个对象的槽函数。在Qt中,信号和槽是通过宏(Q_OBJECT和SIGNAL、SLOT)进行声明......
  • 深度学习算法中的遗传编程(Genetic Programming)
    深度学习算法中的遗传编程(GeneticProgramming)引言深度学习算法在近年来取得了巨大的成功,广泛应用于计算机视觉、自然语言处理等领域。然而,深度学习算法仍然面临着一些挑战,例如需要大量的标注数据、模型结构的选择等。为了解决这些问题,研究者们开始探索结合遗传编程(GeneticProgram......
  • Qemu源码分析(7)--Apple的学习笔记
    一,前言今天继续分析主要的api,包括了printlog和属性add及set,因为对于不同对象的操作,主要就是靠属性值设置及判断使用。二,源码分析A,关于qemu中自带的-d的log需要传入的参数主要通过-d然后传入的参数如下第2个成员,比如out_asmconstQEMULogItemqemu_log_items[]={{CPU_LOG_TB......
  • 学习笔记3
    第十章:sh编程介绍第十章的主要内容是研究sh编程。对于sh编程的介绍分为以下几个方面:1.sh脚本的编写脚本格式以#!/bin/bash开头(指向解释器)2.sh控制语句2.1脚本格式脚本格式以#!/bin/bash开头(指向解释器)2.2第一个shell脚本,helloworld.sh,输出helloworld!2.3执行方式方......
  • 学习笔记3
    学习笔记3一门程序设计语言具有以下必备的要素和技能:语法:了解语言的基本语法规则,包括变量、数据类型、运算符、控制流程(如条件语句和循环语句)、函数定义等。数据结构:理解常见的数据结构,如数组、链表、栈、队列、树、图等,并能够灵活地应用于实际问题中。算法:掌握常见的算法思......
  • 信息安全系统设计与实现课程第十章学习笔记
    一、知识点总结1、sh脚本sh脚本是一种文本文件,包含一系列sh语句,用于执行一系列命令。它是一种脚本语言,通常以.sh为文件扩展名。脚本的执行需要使用shell解释器,比如Bash、csh、ksh等。脚本的基本结构如下:#!/bin/bash#Thisisacommentecho"Hello,World!"在这个示例中,#!/......
  • 学习笔记3
    第10章sh编程——教材知识点归纳这一章课本为我们介绍的是sh编程内容,sh是一种脚本,是一种可以实现在linux中批量执行命令的文件。10.1~10.2sh脚本、sh脚本和C程序sh是Linux下进行批处理的脚本,我觉得它类似于windows下的bat脚本。可见sh脚本的逻辑和C语言等程序设计语言有很多......
  • 学习笔记3
    知识点归纳无论是Python、C、Java还是其他编程语言,程序设计语言通常都有一些共同的必备要素和技能。这些要素和技能在shell脚本中也可以找到对应,尽管shell脚本是一种脚本语言,与通用编程语言有些不同,但也具备类似的元素和技能。以下是一些必备的要素和技能:语法编写规范的代码:......