Linux shell脚本笔记-One

news/2025/1/31 20:49:57/

前言

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

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

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

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

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

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

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

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

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

3.if条件分支

bash">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分支实例

bash">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.运算符

bash">#!/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.字符串处理

bash">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.文件相关操作的判定运算符

bash">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.数组操作

bash">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.ppmy.cn/news/1568236.html

相关文章

计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【数据分享】1929-2024年全球站点的逐日降水量数据(Shp\Excel格式)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2024年全球气象站点的逐日平均气温数据最高气温数据和最低气…

蓝桥杯3519 填充 | 分类讨论

题目传送门 很简单&#xff0c;遍历一次字符串&#xff0c;将‘?’作为0或1处理&#xff0c;发现00和11统计次数即可。 s str(input()) cnt 0 arr [00, 11, 0?, ?0, 1?, ?1, ??] i0 while i < len(s)-1:if s[i:(i2)] in arr:i 2cnt 1else:i 1 print(cnt)END✨

uniapp 地图添加,删除,编辑标记,在地图中根据屏幕范围中呈现标记

前言 小程序实现新功能&#xff0c;在地图中选取位置添加标记&#xff0c;并在地图中呈现添加的标记&#xff0c;&#xff08;呈现的是根据当前屏幕范围内的标记&#xff09;&#xff0c;并对标记进行分享&#xff0c;删除&#xff0c;编辑&#xff0c;导航&#xff0c;并从分…

React 前端框架开发详细操作

一、引言 在当今的 web 开发领域,React 作为一款流行的前端框架,以其高效的组件化开发模式、虚拟 DOM 带来的高性能以及灵活的生态系统,受到了广大开发者的青睐。无论是开发小型的单页应用还是大型的企业级项目,React 都能展现出强大的能力。本文将详细介绍 React 前端框架…

pytorch使用SVM实现文本分类

完整代码&#xff1a; import torch import torch.nn as nn import torch.optim as optim import jieba import numpy as np from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn import metric…

Autosar-Os是怎么运行的?(内存保护)

写在前面&#xff1a; 入行一段时间了&#xff0c;基于个人理解整理一些东西&#xff0c;如有错误&#xff0c;欢迎各位大佬评论区指正&#xff01;&#xff01;&#xff01; 1.功能概述 以TC397芯片为例&#xff0c;英飞凌芯片集成了MPU模块&#xff0c; MPU模块采用了硬件机…

Docker 从零开始掌握容器化技术

Docker 初学者指南&#xff1a;从零开始掌握容器化技术 引言 Docker 是一个强大的工具&#xff0c;可以帮助开发者轻松地创建、部署和运行应用程序。对于初学者来说&#xff0c;Docker 可能看起来有些复杂&#xff0c;但一旦掌握了基本概念和操作&#xff0c;你会发现它非常直…