Linux实验三:shell程序设计: shell基础

实验目的:

进一步巩固shell程序设计语言基本语法,加深对所学知识理解。

实验要求

1. 四种变量的使用

2. 配置环境变量

3. 元字符和正则表达式

4. 引号

1. 本地变量

$ var1="hello Linux" //定义本地变量var1

$ read var2          //定义本地变量vae2

$ echo $var1  $var2  //显示本地变量的值

2. 环境变量

$ env //显示系统的环境变量

$ echo $PATH  //显示搜索路径变量PATH

$ MYNAME="zhangs"  //定义本地变量MYNAME

$ export MYNAME //将本地变量MYNAME输出为环境变量

下面观察环境变量与本地变量作用范围的区别

$ echo  $var1   $MYNAME  //显示本地变量和环境变量

$ bash //创建子进程bash

$ echo $var1  $MYNAME //显示本地变量和环境变量

$ exit //退出子进程bash

$ echo $var1  $MYNAME

通过修改环境变量PS1可修改提示符

$ PS1=$   //将提示符变为$

3. 位置变量

使用编辑器vi编辑下列shell脚本

#!/bin/bash

echo $0 $1 $2 $3

将上述两行脚本保存为文件locat.sh

$ chmod +x locat.sh //增加执行权限

$ ./locat.sh  you me he

观察显示结果,理解位置变量的定义

4. 预定义变量

用编辑器vi编辑以下shell脚本

#!/bin/bash

echo  $#

echo  $*

将上述三行保存为文件predef.sh

$chmod +x predef.sh //增加执行权限

$ ./predef.sh Linux Unix Windows

观察运行结果,理解预定义变量的含义

5. 配置环境变量

可通过用户主目录下的配置文件,改变系统的启动参数,例如:可通过修改.bash_profile修改环境变量PATH,具体操作如下:

$ cd ~  //进入用户的主目录

$ vi .bash_profile //编辑配置文件

若文件中有下列行:

PATH= $PATH;$HOME/bin

则在PATH路径中增加当前路径,修改后外:

PATH= $PATH;$HOME/bin:.

$ exit //退出

用该用户的账号重新登录系统

执行当前目录下的locat.sh脚本无需制定当前路径,例如:

$ locat.sh  myname is zhangs

///-------------------------------------------------------------------

logout退出当前用户,乌班图在当前用户的主目录下修改环境变量

似乎没有bash_profile文件。

///-------------------------------------------------------------------

6.元字符与正则表达式

$ cd ~  //进入用户主目录

# ls -l  / >list  //以详细方式列出根目录下的所有文件信息,重定向至list文件

$ grep ^d  list     // 查询所有目录

$ ls *.sh  //列出所有后缀名为.sh的shell脚本文件

6. 反引号、单引号和双引号

$ abc="pwd"

$ echo '$abc'  //只显示单引号内的字符串

$ echo "$abc"  //显示变量的值

$ echo `"$abc"`  //"和`的综合使用

$ echo "`pwd`"  //为"内的`作出解释

$ echo *

$ echo "*"    //屏蔽元字符的特定含义

注:双引号的命令替换是:将双引号内一对反引号中的命令替换为该命令运行的结果。

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

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

相关文章

Linux常用命令——blkid命令

在线Linux命令查询工具 blkid 查看块设备的文件系统类型、LABEL、UUID等信息 补充说明 在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行…

【linux】服务器CPU占用50%,top/htop/ps却看不到异常进程?使用unhide可以查看!

问题描述 htop发现前32个核全被占满了,但是却找不到对应进程号 查杀 安装unhide查看隐藏进程 apt-get install unhideunhide使用 unhide proc果然发现了隐藏进程 杀死隐藏进程 kill -9 [pid]这么多pid号,我这边杀了其中一个,发现CPU…

本地websocket服务端暴露至公网访问【cpolar内网穿透】

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…

C++设计模式之工厂模式(中)——工厂模式

工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式 工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加,可以通过新增子类工厂来生产,没有破坏程序设计原则中的开放封闭原则。 介绍 工厂模式先抽象…

域控操作五:统一熄屏睡眠时间

直接看图路径,我只设置了熄屏,如果要睡眠就下面那个启用设置时间

一文2000字使用JMeter进行接口测试教程!(建议收藏)

安装 使用JMeter的前提需要安装JDK,需要JDK1.7以上版本目前在用的是JMeter5.2版本,大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin,双击jmeter.bat启动运行 启动后默认为英文版本,可通过Options – Cho…

IIC驱动OLED HAL库+CubeMX

一.IIC传输数据的格式 1.写操作 2.读操作 3.IIC信号 二. IIC底层驱动 #define SCL_PIN GPIO_PIN_6 #define SDA_PIN GPIO_PIN_7#define SCL_PORT GPIOB #define SDA_PORT GPIOB/********************** 函数宏定义 **********************/ #d…

Navicat 技术指引 | 连接 GaussDB 主备版

Navicat Premium(16.2.8 Windows版或以上) 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…

LangChain(0.0.339)官方文档一:快速入门

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、LangChain简介(v0.0.338)1.1 整体框架1.2 主要组件1.2.1 Model I/O1.2.2 Retrieval1.2.2.1 RAG1.2.2.2 Retrieval 1.2.3 Chain 1.3 其它组件1.3.1 …

STM32笔记---RTC

目录 一、RTC简介 二、主要特性 三、功能描述 3.1 读RTC寄存器 3.2 配置RTC寄存器 四、BKP简介 五、RTC_Init() 1. 函数BKP_ReadBackupRegister 2.RCC_LSEConfig设置外部低速晶振(LSE) 3.RTC基本结构 5.RTC_Init()实现 6.time.h 一、R…

九州未来联合联通智网科技发布白皮书,促进车联网融合发展

2023年11月21日,由2023中国5G工业互联网大会组委会、工业和信息化部主办,联通智网科技承办的2023中国5G工业互联网大会——5G车联网与智慧交通创新发展平行会议,在武汉成功举办。 九州未来作为中国联通车联网创新联合体成员单位,受…

【Sql】sql server还原数据库的时候,提示:因为数据库正在使用,所以无法获得对数据库的独占访问权。

【问题描述】 sql server 还数据库的时候,提示失败。 点击左下角进度位置,可以得到详细信息: 因为数据库正在使用,所以无法获得对数据库的独占访问权。 【解决方法】 针对数据库先后执行下述语句,获得独占访问权后&a…

线性空间(也叫向量空间)、线性运算

线性空间、线性运算 线性空间,也称向量空间。 假设是一个非空集合,是一个实数域。 在中定义了一个加法:即对中任何两个元素和,总有中另外一个元素与它们相对应,称为和的和,记作: 在定义了一个…

mac电脑系统活动监控:iStat Menus 中文 for Mac

iStat Menus是一款Mac操作系统上的系统监控工具,它提供了实时的系统状态和性能数据,让用户可以方便地监控和管理自己的电脑。iStat Menus以菜单栏图标的形式显示各种系统指标,用户可以轻松访问和查看这些信息。 以下是iStat Menus软件的一些…

debian 设置系统默认以命令行方式启动,关闭x windows

debian 设置系统默认以命令行方式启动,关闭x windows 2021-01-02 tech linux 设置 grub启动设置在/etc/default/grub中,打开 default grub 配置: $ sudo vim /etc/default/grub修改以下配置: 更新grub,设置多用户启动: …

CUDA学习笔记9——CUDA 共享内存 / Shared Memory

由于共享内存拥有仅次于寄存器的读写速度,比全局内存快得多。因此,能够用共享内存访问替换全局内存访问的场景都可以考虑做对应的优化。 不利用共享内存的矩阵乘法 不利用共享内存的矩阵乘法的直接实现。每个线程读取A的一行和B的一列,并计…

『Linux升级路』基础开发工具——gcc/g++篇

🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、快速认识gcc/g 二、预处理 📒1.1头文件展开 📒1…

从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合

🎏:你只管努力,剩下的交给时间 🏠 :小破站 "从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合 前言准备工作编写docker-compose.yml文件为什么使用本机ip为什么skywa…

【云备份】第三方库的认识与使用

文章目录 json库粗略认识详细认识writer 类reader类jsoncpp序列化实现jsoncpp反序列化实现 bundle文件压缩库简单认识bundle库实现文件压缩bundle库实现文件解压缩 httplib库Request类Response类Server类Client类 json库 粗略认识 json是一种数据交换格式,采用完全…

激光切割设备中模组的作用有哪些?

激光切割设备是一种高精度的自动化加工设备,用于对金属、非金属等材料进行精确切割。直线模组作为激光切割设备的重要组成部分,在激光切割设备中起着重要的作用,为设备的运动系统提供了高精度、高稳定性和高效率的运动控制。 1、高精度的位置…