linux shell操作-基本脚本编写

news2024/10/7 9:27:49

文章目录

  • 变量
  • 分支
  • 循环
  • 函数
  • 函数案例

变量

  • 普通变量
    • 声明变量,直接赋值,同python
    • =两边不能有空格
    • ‘’ 单引号表示纯字符
    • “”双引号表示一个整体
    • ``反引号表示操作命令
    • 末尾没有;号
# 直接赋值,
name='jack'  # 纯字符
pyCode='import os\nimport csv\n xxxx'
# -e 识别转义字符,输出到文件中
echo -e $pyCode > content.txt  # $符引用变量的值
state="name is jack, current dir $(pwd)" # 必须带括号
echo -e $state >> content.txt    
  • 环境变量
    • 配置环境变量,以使linux操作系统可以使用。
    • 当前用户下的环境变量
# 编辑文件
vim  ~/.bashrc

# 配置环境变量
export PATH=$PATH:/home/xxx/py
export LD_LIBRARY_PATH=XXXX

# 保存后,使用变量生效
source ~/.bashrc
  • 全局的环境变量
# edit
vim /etc/profile
# config
export PATH=$PATH:/home/xxx/py

# enable
source /etc/profile
  • 命令行变量
    • shell 脚本命令行
    • 函数的参数
# 执行shell脚本,传参
$ sh laufing.sh param1 param2
# 脚本中使用$1  $2 ....$9..${10}
# 获取参数个数 $#
# 获取所有的参数 $* / $@
# $?上一条指令的执行结果 0表示成功

# 定义函数 类js
function func(){
	echo $1
	echo $2
}
# 执行函数
func param1 param2

 

分支

  • test xxx,表示测试条件,成功返回true
  • 数值比较
    • -eq 等于
    • -gt 大于
    • -lt 小于
    • -ge 大于等于
    • -le 小于等于
  • 字符串比较
    • = 相同
    • != 不同
    • -z 长度为0
  • 文化目录的判断
    • -e 文件或者目录是否存在
    • -f 存在且为文件
    • -d 存在且为目录
    • -r 文件存在且可读
    • -w 文件存在且可写
    • -x 可执行
# test判断语句
if test 5 -gt 3;then
	echo "true"
fi # 结束
 
# [] 也表示测试语句,必须有空格
if [ $1 = '' ];then
	echo "no params"
elif [ $1 = 'lauf' ] || [ $1 = 'tom' ];then
	echo "lauf or tom params"
else
	echo "other params"
fi

&& || 连接多个测试条件,
! 条件内部取反

循环

# 循环数组, 闭区间
for i in {1..5};do
	echo $i
done

# 变量目录下的文件
curDir=`ls $(pwd)` # 数组
for i in $curDir  # 引用数组
do
	echo $i
done

函数

shell定义数组特别简单,类似js。

function func1(){
	echo $1  # 打印第一个参数
}

# 函数调用,并传参
func1 "tom" 4

函数案例

递归实现每个目录下添加文件。
在这里插入图片描述

创建lauf.sh脚本

#!/bin/bash

function addFile(){
	if [ -d $1 ];then
		echo "add file for $1"
		touch "$1/lauf.txt"
		# recursive
		dealDir $(pwd)/$1
	fi
}

function dealDir(){ # need absolute path
    cd $1
	curFiles=`ls $1`
	for i in $curFiles;do
	    addFile $i
	done
}

# sh lauf.sh /home/laufing/aa
dealDir $1

 

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

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

相关文章

Android进阶 四大组件的工作过程(一):Activity的工作过程

Android进阶 四大组件的工作过程(一):Activity的工作过程 导语 本系列文章主要是来介绍Android中四大组件的工作过程的,参照书籍为Android进阶解密,主要还是会涉及到源码的阅读。关于源码,大家可以到Andro…

Linux - 第25节 - Linux高级IO(三)

目录 1.Reactor模式 1.1.Reactor模式的定义 1.2.Reactor模式的角色构成 1.3.Reactor模式的工作流程 2.epoll ET服务器(Reactor模式) 2.1.epoll ET服务器源代码 2.2.epoll ET服务器源代码讲解 2.2.1.设计思路 2.2.2.Connection结构 2.2.3.TcpSe…

VMware Fusion网络配置 - 设置Nat静态IP

准备把主力机器从ThinkPad T460P替换到MacMini上, MacOS版本: 10.15.7 当前最新MacOS版本是13 于是面临一个问题, 很多最新的工程软件不支持我这IntelCPU的MacOS陈旧版本, 于是我准备装一个虚拟机, 把工程软件都安装到虚拟机里, 宿主机访问其中的服务, 这样还能继续保持我这…

从定义到实际应用,详解项目管理的基本概念与核心内容

项目管理是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。项目管理的内容包括项目范围管理,是为了实现项目的目标,对项目的工作内容进行控制的管理过程。它包括范…

mysql5安装【含mysql安装包】

mysql5安装【含mysql安装包】 安装包等资源安装流程 安装包等资源 安装包下载地址【CSDN免费】:https://download.csdn.net/download/qq_47168235/87881814 如果上面的个下载不了,就通过百度网盘吧 百度网盘连接:https://pan.baidu.com/s/1G…

碳排放预测模型 | Python实现基于CNN卷积神经网络的碳排放预测模型(预测未来发展趋势)

文章目录 效果一览文章概述研究内容环境准备源码设计学习总结参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于CNN卷积神经网络的碳排放预测模型(预测未来发展趋势) 研究内容 这是数据集的链接:https://github.com/owid/co2-data/blob/master/owid-co2-data.csv …

zabbix之ODBC监控方式

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 15.1 概述 ODBC监控对应于Zabbix前端中的 数据库监视器 监控项类型。 ODBC是C语言编写的中间件API&#xf…

uniapp 使用组件 uni-list 实现聊天列表功能

如何使用 uniapp 的组件实现聊天列表的功能呢,翻阅了半天文档,终于找到一个实用的方法,下面是具体的步骤 1、首先需要下载对应的插件 去uniapp的官方文档进行下载(uni-ui - DCloud 插件市场),这里直接下载…

机器学习 day17( Tensorflow和Numpy中的数据形式 )

Numpy和Tensorflow NumPy (Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。TensorFlow是Google开源的第二代用于数字计算的软件库。它是基于数据流图的处理框架,…

使用Docker-Compose对Docker容器集群快速编排

目录 一、Docker-Compose1、Docker-Compose使用场景2、Docker-Compose简介3、Docker-Compose安装部署4、YAML 文件格式及编写注意事项5、Docker Compose配置常用字段6、Docker Compose 常用命令7、Docker Compose 文件结构8、docker Compose撰写nginx 镜像9、docker Compose撰写…

leetcode 链表+双指针问题小结

文章目录 141. 环形链表142. 环形链表 II19. 删除链表的倒数第 N 个结点160. 相交链表 141. 环形链表 设置两个速度不一样的链表,如果其中他们两个在经过一定的步数(进入环之后,在 n ∣ 环的大小 ∣ n \times |环的大小| n∣环的大小∣ 步后会重合)之后…

Redis的复制

配置 在Redis中使用复制功能非常容易 在从Redis服务器的redis.conf中写入slaveof masterip masterport即可,主Redis服务器不需要做任何配置在启动Redis服务器的时候,指定主服务器,redis-server --slaveof masterip masterport在客户端指定主…

038_SSS_Multi-Architecture Multi-Expert Diffusion Models

Multi-Architecture Multi-Expert Diffusion Models 1. Motivations & Arguments & Contributions 本文提出了一种在diffusion的不同步数采用不同的网络结构的方法提高生成质量和效率。 Diffusion模型需要大量的计算时间成本,改进方式主要有两个方面&…

教你用栈实现队列怎么写

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 队列(Queue)和栈(Stack)是两个基本的数据结构。队列是一种先进先出(First-In-First-Out, FIFO)…

【Spring】——Spring生命周期

前言 ❤️❤️❤️Spring专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring_冷兮雪的博客-CSDN博客 前面我们讲完了Spring中有关Bean的读和取,我们还没有好好去了解了解Bean对象,这篇 …

XML文件原理详解

文章目录 一、简介1. XML定义2. 测试3. HTML和XML的区别 二、XML基本语法1. 语法规则2. 元素的属性3. CDATA4. DTD文件5. XSD文件 三、Java解析XML1. 简介2. 解析XML文件 四、Xpath1. 简介2. Xpath的使用 一、简介 1. XML定义 XML(可扩展标记语言)是一…

高压放大器在介电材料中的应用有哪些

高压放大器是一种能够输出高电压的放大器,具有多种应用,其中之一就是在介电材料中的应用。介电材料是指能够保持一定电荷和电场状态的物质,其特点包括绝缘性、极化性和介电常数等。下面安泰电子将详细介绍高压放大器在介电材料中的应用。 介电…

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第4章 OpenHarmony应用开发实例

开发环境: 开发系统:Ubuntu 20.04 开发板:Pegasus物联网开发板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS 4.1新建工程及配置 1.新建工程及源码 新建目录 $ mkdir hello在applications/sample/myapp中新建src目录以及…

【零基础学机器学习 5】机器学习中的分类:什么是分类以及分类模型

👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个…

华为OD机试真题 JavaScript 实现【字符串加密】【2023Q1 100分】,附详细解题思路

一、题目描述 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,将所得结果作为新字母…