linux脚本编程基础

【Linux脚本编程】——Shell编程基础——001(1) 未知数(变量)一个未知数,随时可以变化的量叫变量。 阅读详情

本篇为linux脚本编程基础。

目录

一、bash

1.1 bash

1.2 source命令和./命令

二、文本流及重定向

2.1文本流

2.2 重定向

三、shell变量

四、引用

五、算术表达式

六、添加用户脚本(练习)

七、流程控制


一、bash

1.1 bash

bash是一个解释器,可以从1)用户交互输入2)文本文件输入中执行命令。在命令行输入bash命令时会创建一个bash子进程,再次输入命令时会在这个bash子进程中执行命令。如下图所示:

1.2 source命令和./命令

有如下sh01.sh文件:

source命令:从当前bash(shell)执行文件中的命令。

source sh01.sh   

执行后打印的进程号为当前bash的进程号。

./命令:从当前bash(shell)中创建子bash执行文件中的命令。

执行以下命令:

chmod +x sh01.sh    #转换为可执行文件
./sh01.sh           #用./命令执行

./命令读取到sh01.sh的第一行时会按/bin/bash启动子bash,然后用子bash执行sh01.sh中的命令,执行完返回父bash。

注意:若没有第一行#!/bin/bash,./命令也会启动默认bash执行文件中的命令。

二、文本流及重定向

2.1文本流

程序自身都有I/O    •0:标准输入•1:标准输出•2:错误输出

/proc/$$/fd    #该目录下为输入输出端。

2.2 重定向

输出重定向

ls / /temp 1>bbb          #将/和/temp下的内容通过标准输出重定向到bbb文件中,该方式会覆盖bbb中的
                            内容,输出顺序按目录树深度输出,同级目录按字典序输出
ls / /temp 1>>bbb         #将/和/temp下的内容通过标准输出追加重定向到bbb文件中,该方式将输出追
                            加到bbb文件中
ls /aabb 2>ccc            #将错误输出到ccc文件中(没有/aabb这个文件)
ls / /aabb 1>ls01.out 2>ls02.out   #将标准输出和错误输出分别输出到不同文件中
ls / /aabb 1>ls03.out 2>ls03.out   #执行覆盖重定向后ls03.out中的内容为标准输出!因为会先输出错误
                                      信息,然后输出正确信息
ls / /aabb 1>>ls04.out 2>>ls04.out #执行追加重定向后ls04.out中的内容前面为错误输出,后面为标准输
                                     出
ls / /aabb 1>ls06.out 2>&1         #标准输出到文件,错误输出重定向到标准输出。两边都是文件描述符
                                     的时候用>&符号
ls / /aabb 2>&1 1>ls06.out         #执行结果:控制台输出错误信息,ls06.out中为ls /命令的正确信
                                     息。解释:ls / /aabb执行后得到错误信息1,正确信息2。2>&1后
                                     错误信息输出到控制台,1>ls06.out后正确信息输出到文件中。
ls / /aabb >& ls07.out             #标准输出和错误输出重定向到ls07.out。特殊写法。相当于2>&1 
                                     1>ls07.out,连续执行。
>& &>                     #作用相同,相当于错误重定向到标准输出,左边省略2和右边省略1

输入重定向

cat 0</etc/inittab           #将/etc/inittab文件中的内容重定向到标准输入,并用cat显示出来

使用输入输出访问百度

三、shell变量

函数变量

数组变量

特殊变量

管道

其中,创建的子bash可以继承父bash的变量值。

$$和$BASHPID

四、引用

–双引号:弱引用,参数扩展

–单引号:强引用,不可嵌套

五、算术表达式

算术表达式

–let  算术运算表达式

      •let  C=$A+$B

–$[算术表达式]

      •C =$[$A+$B]

–$((算术表达式))

      •C=$(($A+$B))

–expr  算术表达式 

      •注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用

      •C=`expr $A + $B`

条件表达式

test命令

[]命令

六、添加用户脚本(练习)

目标如下:

代码如下,运行时“./adduser.sh dxw”

#! /bin/bash
# 判断输入参数,如果参数为1个,$# -eq 1 为true取反为false,后面不会执行
[ ! $# -eq 1 ] && echo "args error!!!" && exit 2
# 判断用户是否已存在。id $1输出到“黑洞”中。
id $1 >&/dev/null && echo "user exist" && exit 3
# 添加用户。id $1输出信息到“黑洞”中不显示;使用管道设置密码。
useradd $1 >&/dev/null && echo $1 | passwd --stdin $1 >&/dev/null && echo "user add success" && exit 4
# 如果上面没有正确退出,则输出错误提示。
echo "i don't know ,user add fail" && exit 5

七、流程控制

if命令

while命令

for命令

练习

代码如下:

#! /bin/bash
oldIFS=$IFS               #默认分隔符为空格、制表符、换行符。在此替换为换行符分割。
IFS=$'\n'
for i in `du -a $1 | sort -nr`;do      #按大小逆序排列目录中的文件
	filename=`echo $i | awk '{print $2}'`    #获取文件名
	if [ -f $filename ];then                 #如果为文件,输出
		echo $filename
		break
	fi
done 
IFS=$oldIFS              #将分隔符换为默认的

 

 

31、Linux 系统基础操作与脚本编程全解析 本文详细解析了Linux系统的基础操作和脚本编程技巧,涵盖了远程连接、shell操作、进程与用户管理、文件和目录管理、文件归档与压缩以及shell脚本编程等内容。适合Linux初学者和系统管理员学习和实践,帮助提升Linux环境下的操作和开发能力。 阅读详情

相关推荐

5、Linux 脚本编程:从基础到应用

本文详细介绍了Linux脚本编程的基础知识与实际应用,包括脚本编写规范、变量使用、条件判断、控制结构、函数、常用命令、正则表达式等内容。通过具体示例,帮助读者掌握Shell脚本的开发技巧,并实现自动化任务处理。同时涵盖了脚本优化、错误处理、安全性以及定时任务等高级主题,是学习Linux脚本编程的全面指南。

jj890的博客 115

linux中,如何写一个shell脚本

直接赋值跟所有的编程语言一样,变量就是用来赋值的名称。变量赋值跟Java编程语言保持一致变量名=“赋予的值”,为变量赋值时可以使用单引号也可以使用双引号age = "18"⚠️ 变量名和等号之间不能有空格,变量名的命名需要遵守以下规则变量名可包含字母、数字、下划线_数字不能作为变量名的开头不能包含特殊字符(?!@ & *……)不能使用shell关键字(if、then、while、else、for……)作为变量名避免造成不必要的误会用全大写字母表示常量。

achaoyang的博客 5906

Abaqus6.14.4 Linux详细图文安装教程

Abaqus6.14.4 Linux详细图文安装教程 20170409 1. 准备安装环境 1.1 安装CentOS 6.5,更新库 1.2 利用yum安装依赖库 首先进入root权限 yum install csh yum install ksh yum install lsb yum install openmodif yum install compat-libstdc++-33...

snuhxm的博客 7842

Linux之shell脚本编程

•。

weixin_57975238的博客 3086

百度新闻评论内容抓取

通过抓包分析发现,百家号手机app端文章评论内容接口为:https://ext.baidu.com/api/comment/v1/comment/getlist?appid=101&sid=1008524_2-1010050_1-1007549_23033-1007550_23035&cuid=01B5EAF73E8A83BB842BE04E4FB6C656|23200201047...

codingforhaifeng的博客 2422

Linux平台Shell脚本编写

此文主要描述Linux环境下Shell脚本如何编写,以及不定期会更新小编日常工作中所运用到的Shell脚本,并分享Shell脚本编写资源。

weixin_45844208的博客 3682

绕开华为通道,获取解锁码解锁BootLoader

刷机有风险,操作需谨慎,如果因为各种因素导致手机变砖无法开机,本教程概不负责,望悉知 前言 这篇文章的大多内容是根据我自己找的一篇文章《绕开华为通道,获取解锁码解锁BootLoader》来编写的,里面的大部分内容是文章的原内容。下面的都是我参考文章中做了一些小部分的修改,增加了我华为P8手机的一些操作,下面开始讲述我的解锁过程。 因为华为官方在2018年的七八月份吧,关闭了解锁码的申请通道,这...

Martin.Mu `s Special Column 5万+

Linux Shell 脚本编程

shell本质上就是用户与计算机交互的界面/窗口。用户将要执行的操作通过shell传递给计算机,计算机将执行的结果通过shell返回给客户端。用户执行操作的方法Ⅰ:用户通过鼠标点击完成发送要执行的操作指令Ⅱ:用户直接发送命令shell分类图形化shell:GUI例:winodws桌面字符化shell:CLI例:linux的shell窗口位置参数,也被称之为位置变量通过位置参数,可以在执行程序的时候,向程序传递数据shell接收参数的方法向shell传递参数的方法。

m0_65544268的博客 2753

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4260

运动想象 (MI) 分类学习系列 (19) : EEG-TransNet

本文提出了一种基于注意力机制的卷积神经网络(EEG-TransNet),用于运动想象脑电图(MI-EEG)解码。该方法创新性地通过平均池化和方差池化提取多模态时间信息,并结合自注意力模块捕获长期依赖关系。消融实验表明,方差池化比最大池化更有效(p<0.05),且注意力模块和卷积编码器对特征判别性至关重要。可视化分析验证了该方法能学习到更具判别性的紧凑特征。该工作为MI-EEG解码提供了新的多尺度时间信息融合视角,代码已开源。

走在深度学习前沿的小宋 358

【Linux】Shell脚本编程

Shell是Linux系统的用户界面,它提供用户与内核的一种交互方式。它接收用户输入的命令,并把它送入内核去执行,是一个命令解释器Shell 既是一种命令语言,又是一种程序设计语言(Shell脚本)。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。Shell脚本就是将命令写入文本中,文本可以被执行。

ZLin0007的博客 2837

Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介

上一篇 《Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?》 分析了 bootloader 中是如何调用 libavb 函数库验证 vbmeta 和 boot 等分区的。接下来就打算写一篇介绍 dm-verity 原理的文章,然后再写一篇徒手 dm-verity 实践的文章,结果偶然发现了本篇的英文原版。写得太好,我觉得自己完全没有必要再写原理了。由于原文是英文,有些英语不太好的朋友不一定能完全理解。我花了点时间,结合 AI 将英语原文翻译成中文。

洛奇看世界 3597

Linux基础命令-SHELL脚本编程基础

Linux基础命令-SHELL脚本编程基础SHELL脚本编程基础一、编程基础1. 编程基础2. 程序的执行方式3. 编译和解释型语言4. 编程基本概念二、脚本基本格式1. shell脚本基础2. 创建shell脚本3. 脚本规范4. 编程基本概念5. shell脚本示例6. 脚本调试三、变量1. 变量2. bash中变量的种类a. 局部变量b. 环境变量c. 只读和位置变量3. 退出状态4. 退出...

qq_41596208的博客 1602

手把手教你学simulink实例:基于Simulink的风力发电系统建模与仿真

风力发电作为一种清洁、可再生的能源形式,近年来得到了快速发展。风力发电系统的性能优化和控制策略设计对于提高发电效率、降低运行成本具有重要意义。本项目旨在使用MATLAB/Simulink平台,对风力发电系统进行建模与仿真,研究其动态特性,并验证控制策略的有效性。通过建立风力发电机、传动系统、发电机及电力电子变换器等子系统的模型,实现对风力发电系统的全面分析。

MHD0815的博客 559

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Linux基础_SHELL脚本编程基础

讲师_@王晓春 本章内容▼编程基础▼shell脚本基础▷创建shell脚本▷脚本的基本结构▷变量1. Shell中变量命名法则:2. bash中变量的种类局部变量环境变量位置变量退出状态3. 算术运算赋值逻辑运算4. test命令bash的数值测试bash的文件测试54. 使用read命令来接受输入6. 条件选择 if 语句7. 条件判断:case语句▼bash的配置文件▷编辑配置文件生效1. B...

Not Found 404 3948

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

linux-Shell 编程-Shell 脚本基础

Shell脚本是由一系列Linux命令组成的文本文件,通常用于自动化完成任务。Shell脚本可以在终端中运行,而无需逐个输入命令。Shell脚本的扩展名通常为.sh,但这不是强制性的。在Shell脚本中,变量的使用是非常灵活的。变量名必须以字母或下划线开头,不能以数字开头。定义变量引用变量在引用变量时,需要在变量名前加上# 函数体Shell脚本是Linux系统管理中不可或缺的工具。通过Shell编程,用户可以自动化处理系统任务、文件操作、网络操作等一系列功能。

Flying_Fish_roe的博客 1698

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Linux基础】Linux脚本编程

shell脚本编程

lyh030105的博客 2107

Linux Shell脚本编程-基础1

概述: shell脚本在Linux系统管理员的运维工作中非常重要。shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求。本篇将从编程基础、脚本基本格式、变量、运算、条件测试这几个方面详细介绍shell脚本编程的基础内容,也是我们必须要掌握熟练的内容。 编程语言:事先定义了一组规范,通过关键字按照特定的语法结构编写出来的...

187

linux之基础shell脚本编程2 if语句循环判断

linux之基础shell脚本编程2 if语句循环判断

第九系艾文 3055

Linux基础篇--shell脚本编程基础

Linux基础篇–shell脚本编程基础 本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础 程序:指令+数据 程序编程风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 7.1.1 程序的执行方式 计算机...

天空飘过的鱼的博客 2219

Linux Shell 脚本编程基础

linux shell 编程基础中的基础。

Bulestardemon的博客 1246

linux之基础shell脚本编程1 基础变量赋值

linux之基础shell脚本编程1 基础变量赋值

第九系艾文 3036

Linux Shell 脚本编程基础知识篇—shell简介以及基本操作

Shell本身是一个用C语言编写的程序, 它是用户使用Linux的桥梁。Shell既是一种命令语言, 又是一种程序设计语言。所有的Linux命令都是Shell脚本语言。

weixin_55767624的博客 2722

Linux0基础入门:初识shell脚本编程

初识脚本编程到目前为止我们已经知道了 Linux 系统和命令行的基础知识,是时候开始编程了。本章讨论编写 shell 脚本的基础知识。在开始编写自己的 shell 脚本大作前,你必须了解这些基本概念。使用多个命令到目前为止,你已经了解了如何使用 shell 的命令行界面提示符来输入命令和查看命令的结果。shell 脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另一个命令。shell 可以让你将多个命令串起来,一次执行完成。如果要两个命令一起运行,可以把它们放在同一行中,彼此间用

正小厚的家 532
上一篇: linux下设置帮助文件为中文
下一篇: 网络编程——1、协议基础
ACanswer
博客等级 码龄12年 280粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值