Linux shell脚本笔记-One

前言

        本文主要汇总有关shell脚本常用的知识点,有时候使用忘记某些用法指令,特此汇总方便后续查阅。

一.shell脚本编写的头部定义:

定义的shell脚本头部有多种写法,具体根基实际系统结构处理,如下:       

 #!/bin/sh  , #!/bin/bash,  #!/usr/bin/env bash#sed -i 's/\r$//' #可能脚本中有其他字符,将dos字符替换掉。

二.常用shell脚本的基本知识点

1.常用基本特殊符号含义

   echo "welcome to shell world !"echo "$$"   #当前脚本执行时的PIDecho "$#"   #传入脚本的参数个数echo "$@"   #传入脚本的所有参数(可通for循环访问)echo "$1...n" #着个访问传图的参数echo "$?"   #上一条命令执行的返回值(0:success 非零:失败)

 2.test命令:用预判断条件表达式的真假

a=1       
b=1
if test $a -eq $b 
thenecho "True"
elseecho "False"
fi

3.if条件分支

s='nihao'
c='nihao'
if [ $s = $c ];thenecho "True"
elseecho "False"
fi
flag="Y"
if [ $flag == "Y"];thenehco "$flag"
elif [ $flag == "N"];thenecho "$flag"
fi

4while循环以及case分支实例

while [ 1 = 1 ];
do#表示客户端手动输入对应的数据值,加上-p参数,可以带描述信息如下:#read -p "please input your name:" varread var     case "$var" in1)echo "1---";;2)echo "2---";;3)echo "3---";;4)break;;esac
done

5.运算符

#!/bin/sh
#运算符
a=1
b=2
c=3
d=5
#expr 计算运算表达式
echo "--- + , - , * , / -------->"
echo "a + b =  `expr $a + $b`" 
echo "a - b =  `expr $a - $b`"
#*需要转移,因为有特殊意义
echo "a * b =  `expr $a \* $b`" 
echo "a / b =  `expr $a / $b`"echo "<--------------------------"echo "---------------------------"#逻辑与算符
echo "逻辑运算符:==, != , %, !, -a 与,-o 或"
if [ $a == $b ];thenecho "True"
elseecho "False"
fiif [ $a != $b ];thenecho "True"
elseecho "False"
fiecho "a % b = `expr $a % $b`"flag=0
if [ !$flag ];thenecho "flag = $flag"
elseecho "flag = $flag"
fiif [ $a != 8 -a $b != 0 ];thenecho "$a != 8 -a $b != 0 --> True"
elseecho "$a != 8 -a $b != 0 --> False"
fiif [ $a > 0 -o $b > 0 ];thenecho "$a > 0 -o $b > 0 --> True"
elseecho "$a > 0 -o $b > 0 --> False"
fiecho "----------------------------"
echo " -eq:等于 -le:小于等于-ge:大于等于-ne:不等于-lt:小于-gt:大于             "if [ $a -eq $b ]
thenecho "true"
elseecho "false"
fiif [ $a -ne $b ]
thenecho "true"elseecho "false"
fiif [ $a -gt $b ]
thenecho "true"
elseecho "false"
fiif [ $a -lt $b ]
thenecho "true"
elseecho "false"
fiif [ $a -ge $b ]
thenecho "true"
elseecho "false"
fiif [ $a -le $b ]
thenecho "true"
elseecho "false"
fiecho "---------------------------"

6.字符串处理

echo "---------------------------"
echo "-z :字符串长度为空返回True,-n:字符串长度不为空返回True !"
mystr='welcome to python world !'echo "mystr len = ${#mystr}"
echo "mystr son str ${mystr:2:4}"
if [ -z $mystr ];thenecho "True"
elseecho "False"
fiif [ -n $mystr ];thenecho "True"
elseecho "False"
fi

7.文件相关操作的判定运算符

echo "---------------------------"
echo " -d:是否为目录"
echo " -r:文件是否可读" 
echo " -w:文件dirname="./TTT"
filename="file"是否可写"
echo " -x:文件是否可执行"
echo " -s:文件是否为空(文件大小是否为空,不为空返回true)"
echo " -e:文件是否存在"
dirpath="./TTT/file"
echo "$dirpath"if [ -d $dirname ];thenecho "is dir"
elseecho "not is dir"
fiif [ -r $dirpath ];thenecho "read"
elseecho "not read"
fi
if [ -w $dirpath ];thenecho "write"
elseecho "not write"
fiif [ -x $dirpath ];thenecho "exec"
elseecho "not exec"
fi
if [ -s $dirpath ];thenecho "not empty"
elseecho "empty"
fiif [ -e $dirpath ];thenecho "exist"
elseecho "not exist"
fi
echo "---------------------------"

8.数组操作

echo "array ...."
declare -a array  #定义一个数组
array=(1 2 3 4 5 6 7)
for v in ${array[@]}
doecho "$v"
donefor i in `seq 10`
doecho "$i"
donefor i in {1..6}
doecho "$i"
doneecho "---------------------------"
echo "read..."
#-p 制定输入的变量名称
read -p "Please input your name:" name
echo "name = $name"#-t 秒数 等待输入的秒数,-p联合使用
read -t 3 -p "please input second:" sec
echo "sec = $sec"#-s 隐藏输入的内容,-p联合使用
read -s -p "please input passwd:" password
echo "password = $password"

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

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

相关文章

二次封装的方法

二次封装 我们开发中经常需要封装一些第三方组件&#xff0c;那么父组件应该怎么传值&#xff0c;怎么调用封装好的组件原有的属性、插槽、方法&#xff0c;一个个调用虽然可行&#xff0c;但十分麻烦&#xff0c;我们一起来看更简便的方法。 二次封装组件&#xff0c;属性怎…

c++多态

1.多态的概念 通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同 的状态。 2.多态的定义及实现 2.1多态的构成条件 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为…

docker安装Redis:docker离线安装Redis、docker在线安装Redis、Redis镜像下载、Redis配置、Redis命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull redis:7.4.0 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜像…

【仪器分析】FACTs-幅度

** 当然&#xff0c;这回是一篇没有插图的文章&#xff0c;但是有足够多的描述可以用来想象。 我拿这个系列当作前传试试水 引言。正弦信号可能会发生怎样的变化&#xff1f; ** 近日学FACTs&#xff0c;险些成为传函丁真&#xff0c; 如果从仪器角度考察正弦信号的测量&…

C语言-运算符

1. 按位与运算符&#xff08;&&#xff09; 按位与运算符对两个整数的每一位执行“与”操作。只有当两个相应位都为 1 时&#xff0c;结果才为 1 &#xff1b;否则为 0。 // 示例 int a 5; // 二进制: 0101 int b 3; // 二进制: 0011 int result a & b; …

解决.NET程序通过网盘传到Linux和macOS不能运行的问题

问题描述&#xff1a;.net程序用U盘传到虚拟机macOS和Linux可以正常运行&#xff0c;但是网盘传过去就不行。 解决方法&#xff1a; 这是文件权限的问题。当你通过U盘将文件传输到虚拟机的macOS和Linux系统时&#xff0c;文件的权限和所有权可能得到了保留或正确设置。但如果…

TCP是怎么判断丢包的?

丢包在复杂的网络环境中&#xff0c;是一种常见的现象。 TCP&#xff08;传输控制协议&#xff09;作为一种可靠传输协议&#xff0c;内置了多种机制来检测和处理丢包现象&#xff0c;从而保证数据的完整性和传输的可靠性。本文将介绍TCP判断丢包的原理和机制。 一、TCP可靠传…

牛客周赛 Round 77 题解

文章目录 A-时间表B-数独数组D-隐匿社交网络E-1or0 A-时间表 签到题 #include <bits/stdc.h> using namespace std;int main() {int a[6] {20250121,20250123,20250126,20250206,20250208,20250211};int n; cin >> n;cout << a[n - 1];return 0; }B-数独数…

二分查找题目:寻找两个正序数组的中位数

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;寻找两个正序数组的中位数 出处&#xff1a;4. 寻找两个正序数组的中位数 难度 8 级 题目描述 要求 给定两个大…

【unity游戏开发之InputSystem——07】InputSystem+UGUI配合使用(基于unity6开发介绍)

文章目录 一、InputSystem+UGUI配合使用1、官方文档参考2、切换到新的输入模块二、UGUI中的新输入系统输入模块参数相关1、Send Pointer Hover To Parent2、Move Repeat Delay3、Move Repeat Rate4、XR Tracking Origin5、Deselect On Background CLick6、Pointer Behavior7、S…

uniapp使用uni.navigateBack返回页面时携带参数到上个页面

我们平时开发中也经常遇到这种场景&#xff0c;跳转一个页面会进行一些操作&#xff0c;操作完成后再返回上个页面同时要携带着一些参数 其实也很简单&#xff0c;也来记录一下吧 假设从A页面 跳转到 B页面 A页面 直接上完整代码了哈&#xff0c;很简单&#xff1a; <t…

国内优秀的FPGA设计公司主要分布在哪些城市?

近年来&#xff0c;国内FPGA行业发展迅速&#xff0c;随着5G通信、人工智能、大数据等新兴技术的崛起&#xff0c;FPGA设计企业的需求也迎来了爆发式增长。很多技术人才在求职时都会考虑城市的行业分布和发展潜力。因此&#xff0c;国内优秀的FPGA设计公司主要分布在哪些城市&a…

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…

Direct2D 极速教程(1) —— 画图形

极速导航 Direct2D 简介创建新项目&#xff1a;001-DrawGraphics弄一个白窗口在窗口上画图 Direct2D 简介 大家在学 WINAPI 的时候的时候有没有想过&#xff0c;怎么在一副窗口上画图呢&#xff1f;大家知道 Windows 系统是 GUI 图形用户界面 系统&#xff0c;以 Graphics 图形…

Android13源码下载和编译过程详解

前言 作为Android开发者人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解 一 源码下载 1.1 配置要求 官方推荐配置请参考&#xff1a;AOSP使用入门文档&#xff0c;重点有如下几项&#xff1a; 1.1.1 硬件配置要求 至少需要…

Linux之详谈——权限管理

目录 小 峰 编 程 ​编辑 一、权限概述 1、什么是权限 2、为什么要设置权限 3、Linux中的权限类别- 4、Linux中文件所有者 1&#xff09;所有者分类&#xff08;谁&#xff09; 2&#xff09;所有者的表示方法 ① u(the user who owns it)&#xff08;属主权限&…

python Flask-Redis 连接远程redis

当使用Flask-Redis连接远程Redis时&#xff0c;首先需要安装Flask-Redis库。可以通过以下命令进行安装&#xff1a; pip install Flask-Redis然后&#xff0c;你可以使用以下示例代码连接远程Redis&#xff1a; from flask import Flask from flask_redis import FlaskRedisa…

Go Fx 框架使用指南:深入理解 Provide 和 Invoke 的区别

1. 什么是 Fx 框架&#xff1f; Fx 是一个基于 Go 语言的依赖注入框架&#xff0c;专注于简化应用程序的生命周期管理和依赖的构建。在复杂的应用程序中&#xff0c;Fx 通过模块化的设计方式将组件连接起来&#xff0c;使开发者能够更高效地管理依赖关系。 Fx 的核心理念是&a…

基于金融新闻的大型语言模型强化学习在投资组合管理中的应用

“Financial News-Driven LLM Reinforcement Learning for Portfolio Management” 论文地址&#xff1a;https://arxiv.org/pdf/2411.11059 摘要 本研究探索了如何通过将大语言模型&#xff08;LLM&#xff09;支持的情感分析融入强化学习&#xff08;RL&#xff09;中&#…

K8s运维管理平台 - KubeSphere 3.x 和4.x 使用分析:功能较强,UI美观

目录标题 Lic使用感受优点&#xff1a;优化点&#xff1a; 实操首页项目 | 应用负载 | 配置 | 定制资源定义存储监控告警集群设置 **KubeSphere 3.x** 和 **4.x**1. **架构变化**&#xff1a;2. **多集群管理**&#xff1a;3. **增强的 DevOps 功能**&#xff1a;4. **监控与日…