首页 > 系统相关 >Shell脚本

Shell脚本

时间:2024-12-16 22:31:16浏览次数:3  
标签:脚本 10 Shell num1 num2 echo sh name

Shell脚本

声明!!!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

脚本创建执行与变量使用

第一种执行

加可执行权限

image-20241215022708437

第二种执行

bash 1.sh
sh 1.sh
dash 1.sh

image-20241215022758536

第三种执行

source 1.sh

source与sh区别

image-20241215022930550

颜色区分

变量

image-20241215023037078

单引号、双引号、无引号区别

image-20241215023247164

变量拼接

echo hello $name, im {$age}years old
echo hello $name, im "$age"years old

查看、删除已定义的变量

set | grep name 查看变量
unset name 删除变量

常见变量

HOME
PATH

image-20241215023833086

支持其他位置调用该sh。

方法1

把1.sh迁移到/usr/bin

image-20241215024842622

方法2

把当前目录添加到PATH

export PATH=/root:PATH

长久变量

vi ~/.bashrc
export PATH=$PATH:/root 
source ~/.bashrc   变量生效

字符串相关的操作

str="hello world"
echo ${#str}  长度
echo ${str:0:3}   截取

image-20241215024645746

脚本程序传参

echo 执行的文件名是$0
echo 第一个参数是$1
echo 传递的参数作为一个字符串显示 $*
echo 传递的参数独立作为每个字符串显示$@
echo 传递到脚本的参数个数是$#
echo 最后命令的退出状态是$?
echo 脚本运行的当前进程ID是$$

image-20241215195608436

数学运算

expr 5 + 10  必须有空格
expr 20 - 10
expr 20 \* 10
expr 20 / 10
expr 5 + 10 /* 7
expr \( 5 + 10 \) \* 7

image-20241215200436659

image-20241215200527280

image-20241215200627894

结合变量运算

name=`expr 5 + 10`
name=$(expr 5 + 10)
echo $name

image-20241215200825952

在shell脚本与用户交互

read name age
xiaoming 18

image-20241215201130901

bash
read -p "请输入名字" name
echo $name
read -t 10 -p "请输入名字" name 限制输入时间
read -n 3 -t 10 -p "请输入名字" name 限制输入字符数不超过3

image-20241215213257867

image-20241215213129442

数字变量比较,条件判断

-eq
-lt 小于
-gt 大于
-ne 不等于
只能对数值判断,无法对字符串进行判断
num1=71
num2=72
if [ $num1 -eq $num2 ]; then
	echo 相等
else
	echo 不相等
fi

image-20241215213735390

num1=71
num2=72
if [ $num1 -lt $num2 ]; then
	echo true
else
	echo false
fi

image-20241215214056505

num1=71
num2=71
if [ $num1 -lt $num2 ]; then
	echo true
else
	echo false
fi

image-20241215214148455

字符串比较

str1="hello"
str2="hello"
if [ $str1 = $str2 ];then
	echo true
else
	echo false
fi

image-20241215214557082

大小写敏感

image-20241215214642291

image-20241215214724955

!=自动变为≠

image-20241215214716687

-z检查字符串长度是否为0,是则真
-n是否不为0,与-z相反

image-20241215214931341

image-20241215215014340

布尔运算符

num1=9

if [ $num1 != 9 ];then
	echo num1不等于9
else
	echo num1等于9
fi

image-20241215215159947

-a 逻辑与运算
-o 逻辑或运算

num1=9
num2=19
if [ $num1 = 9 -a $num2 -lt 20 ];then
	echo True
else
	echo False
fi

image-20241215215522361

num1=9
num2=19
if [ $num1 != 9 -a $num2 -lt 20 ];then
	echo True
else
	echo False
fi

image-20241215215631740

num1=9
num2=19
if [ $num1 != 9 -o $num2 -lt 20 ];then
	echo True
else
	echo False
fi

image-20241215215658385

if条件判断与for循环结构

a=10
b=20

if [ $a -eq $b ];then
	echo "a=b"
elif [ $a -gt $b ];then
	echo "a>b"
elif [ $a -lt $b ];then
	echo "a<b"
else
	echo 没有符合上述条件
fi

image-20241215222610597

加上交互:

a=10
b=20
read -p "请输入数字a:" a
read -p "请输入数字b:" b

if [ $a -eq $b ];then
	echo "a=b"
elif [ $a -gt $b ];then
	echo "a>b"
elif [ $a -lt $b ];then
	echo "a<b"
else
	echo 没有符合上述条件
fi

image-20241215222757802

for循环

for num in 1 2 3 4 5
do
	echo "number is $num"
done

image-20241215223002511

循环内容加上abc字符串

image-20241215223047169

结合变量输出循环

image-20241215223115881

for str in "hello world"
do
	echo "str is $str"
done

image-20241215223308186

for循环while循环

for i in `seq 1 5`
do
	echo $i
done
echo '——————————'
for i in $(seq 1 5)
do
	echo $i
done

image-20241215223726307

for ((i = 1; i <= 5; i++))
do
	echo $i
done

image-20241215223915195

while循环

i=1
while(( $i <= 10))  
do
	echo $i
	((i++))
done

i=1
while(( $i <= 10))  
do
	echo $i
	let "i++"
done

双括号用于算数计算和逻辑判断
let执行算数计算

image-20241215224207709

image-20241215224232706

image-20241215224442659

until循环以及函数基本创建调用

i=0
until [ ! $i -lt 10 ]
do
	echo $i
	((i++))
done

image-20241216005216236

case
read -p "请输入" num
case $num in
	1)echo 你输入的是1
	;;
	2)echo 你输入的是2
	;;
	*)echo 你输入的是其他数字 $num
esac

image-20241216005035228

DemoFunc(){
	echo "hello world"
	echo "my name is $1"
}
DemoFunc xiaoming
DemoFunc(){
	echo "hello world"
	echo "My name is $1, and my age is $2 years old."
}

image-20241216004740914

重定向操作

不同脚本互相调用

. z.sh

image-20241216005542482

source z.sh

image-20241216005703760

变量

image-20241216005934659

重定向

image-20241216010015579

image-20241216010031099

image-20241216010118459

输入重定向

/dir1
/dir2
dirs.txt
结合
ls -l < dirs.txt

TODO输入重定向没有生效。

文件描述符

0标准输入
1标准输出
2错误输出

image-20241216010421188

image-20241216010507922

标签:脚本,10,Shell,num1,num2,echo,sh,name
From: https://www.cnblogs.com/gudygudy/p/18611244

相关文章

  • Python速成脚本小子(附20道基础题)
    当今社会,编程已经成为了一种必备的技能。而Python,作为一门高效简洁的编程语言,备受大家的喜爱。Python语言易学易用,非常适合初学者入门,同时也是各大公司招聘的必备技能之一。那么,如何快速入门Python,成为一个Python速成脚本小子呢?以下是一些建议:1.学习基本语法Python语法......
  • PVE系统下——OpenWRT一键扩容脚本(x86下EXT4&SquashFS)
    扩容了x86上的OpenWrt根分区和文件系统。1.PVE上增加硬盘大小2.执行脚本安装依赖opkgupdateopkginstallpartedlosetupresize2fs下载脚本并一键执行wget-U""-Oexpand-root.sh"https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?......
  • xshell类似的工具,还有哪些Xshell类似的工具呢
        Xshell是一款功能强大的远程连接工具,广泛用于SSH、Telnet和Rlogin协议,帮助用户轻松连接和管理远程服务器。然而,Xshell并不是唯一的远程连接工具,市面上还有其他一些类似的工具,能够提供类似甚至更丰富的功能。那么,除了Xshell,还有哪些类似的远程连接工具呢?以下将为您介绍......
  • CTF随题思路—Misc第十八届全国大学生信息安全竞赛(铁人三项)zeroshell_1
    用wireshark打开文件,先过滤HTTP发现该数据流的左下角有base64编码 将其复制解码后得到flag ......
  • linux shell中 " " 与 ' ' 有什么区别?
     创建文件[root@master-1~]#catpath.serviceC:\\ProgramFiles\\MyApp\qwe\\qq\\az需求:使用sed将\\替换为\执行sed命令,并使用双引号""[root@master-1~]#sed-i"s/\\\\/\\/g"path.servicesed:-e表达式#1,字符8:未终止的“s”命令执行sed命令,并......
  • [免费]SpringBoot+Vue校园社团管理系统(优质版)【论文+源码+SQL脚本】
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue校园社团管理系统(优质版),分享下哈。项目视频演示【免费】SpringBoot+Vue校园社团管理系统(优质版)Java毕业设计_哔哩哔哩_bilibili项目介绍随着信息技术的迅速发展,校园管理系统的数字化和智能化成为高校信息化......
  • Oracle数据库循环重建多个物化视图shell脚本
    #!/bin/bash#设置数据库连接信息DB_HOST="LOCALHOST"DB_PORT="1521"DB_SID="pdb"DB_USER="mics"DB_PASS="GZL11mics"TNS_SERVICE="${DB_SID}"START_TIME=$(date+"%Y-%m-%d%H:%M:%S")echo"开......
  • Ansible基础使用-多主机批量执行脚本和一些特性介绍
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.基础用法1.1定义清单1.2静态清单指定受控主机1.3验证清单1.4自定义清单文件2管理配置文件2.1配置ansible2.2配置文件优先级2.3管理配置文件中的设置2.4配置连接2.4.1清单位置2.4.2......
  • Shell编程语法之变量、常量
    Shell的变量、常量变量变量就是程序运行过程中其值可以发生改变的量变量的命名规范应该见名知意,同时遵循如下规则以字母或下划线开头,剩下的部分可以是:字母、数字、下划线最好遵循下述规范:以字母开头使用中划线或者下划线做单词的连接high_student同类型的用数字......
  • 【C#脚本】C#调用Python脚本的方式(一),以PaddleOCR-GUI为例
    以下文章来源于mingupup的学习记录,作者DotNet学习交流前言每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个WebApi进行......