首页 > 系统相关 >泷羽sec-----shell脚本编程(2--3)

泷羽sec-----shell脚本编程(2--3)

时间:2024-11-16 20:14:33浏览次数:3  
标签:脚本 shell -- expr 目录 echo ----- PATH 环境变量

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

永久环境变量

前言

如前所说,都是临时变量,那么什么是永久变量呢,首先要知道环境变量这一词语。

在windows中,计算机设置中有环境变量这一项,我们平时在终端使用一些命令时,为什么没有指定目录或者不在其目录下的情况时,可以直接使用命令呢,就是因为环境变量。$PATH

诚然在linux系统中也是一样的道理,前面创建的脚本都需要指定目录然后执行,那么如何把脚本假如到环境变量中,使得该脚本也可以像命令一样直接使用。

方法1 移动

首先在linux系统中查看环境变量的目录,这些目录下的一些脚本,不需要指定目录,不管在哪个目录下,只要输入命令,就会调取这些目录下的脚本去执行

echo $PATH

在这里插入图片描述

如:ls,查看其目录which ls

然后发现目录/usr/bin在环境变量中,那么在使用ls时,相当于/usr/bin/ls执行了

在这里插入图片描述

然后把自己创建的脚本移动到这个目录下/usr/bin,或者其他环境变量中。这时候就可以直接使用脚本文件的名称,就会执行脚本文件中的代码

这里需要注意,如果是新建的sh文件,需要给予可执行权限,不然即使移动到环境变量中,也是不能直接使用的

在这里插入图片描述

方法2 添加

知道环境变量了,并且脚本文件并没有移动到环境变量的目录下的时候,可以把脚本问价所在目录添加到环境变量中,使用export指令

export PATH=/root:$PATH		//必须大写

export是用于设置环境变量的关键字,使用设置的变量可以在当前shell以及由该shell启动的子进程中生效

PATH环境变量,定义了系统在哪些目录下去寻找可执行程序,如当执行ls时,会根据其所指的目录下去寻找对应的可执行文件,然后执行

/root:PATH重新定义PATH的值,将/root目录添加到原有的PATH变量值的最前面(假设原有的PATH值存储在变量PATH中,这里通过:PATH的形式保留原本的值,并添加新的部分),这样的结果是,当系统去查找可执行程序时,会先在/root目录下查找,然后再按照原来的PATH所指定的其他目录顺序查找

新建一个test.sh文件,并给予可执行权限

在这里插入图片描述

在这里插入图片描述

使用export只是设置了临时变量,当命令行(终端)关闭后,就会失效的,可通过把该代码写入到配置文件中(.bashrc)才能永久生效,然后使用source .bashrc命令,使得该文件生效(或者重启)

vi /.bashrc

在这里插入图片描述

甚至可以输出环境变量,可以看到并没有该目录,但是可以直接使用,因为是写入文件的,所以是永久环境变量并且可直接执行

在这里插入图片描述

字符串的相关操作

str="hello"			//=与变量名中间不要空格
echo ${#str}		//输出变量str的字符串长度

echo ${str:0:3}		//截取字符串str,从下标0到下标3的字符串

在这里插入图片描述

脚本参数传递

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


如文件名为1.sh

其中$1是第一个,第二个就可以是$2,那么就可以是$3....$n
sh 1.sh name		就会显示第一个参数为name

$* 就是将参数当作统一的字符串显示出
$@ 将每个字符串当作独立的字符串显示
$? 为0,表示运行正常,其他数字,则出错
$$ 脚本运行的当前进程ID

编写test.sh文件,并传参,看输出结果

在这里插入图片描述

在这里插入图片描述

数学运算

利用expr进行数学运算 (运算符前后有空格的)

加减法

expr 1 + 2

在这里插入图片描述

乘法

expr 2 \* 2,因为*需要转义

在这里插入图片描述

除法

expr 6 / 3

在这里插入图片描述

取模

expr 5 / 3

在这里插入图片描述

对于加减乘除混合的

expr 3 + 7 \* 10

在这里插入图片描述

需要先计算加减的,使用()进行处理,而且,()需要转义,前后也有空格

expr \(3 + 7\) \* 10

在这里插入图片描述

通过变量赋值,使用$

num = $(expr 5 \* 10)

echo $name

在这里插入图片描述

当然还有((....))的形式,let命令

如:

((name = 5 * 10))
或者
let "name = 5 * 10"

echo $name

标签:脚本,shell,--,expr,目录,echo,-----,PATH,环境变量
From: https://blog.csdn.net/China_I_LOVE/article/details/143809061

相关文章

  • 10分钟入门vue2!!
    概念:Vue是用于构建用户界面的渐进式(就是学一点就能够用一点)框架,总的来说,就是基于数据来构建用户页面,以便于用户看懂。Vue的两种使用方式:1.核心包开发2.核心包加插件加工程化开发1.Vue的基础语法1.创建第一个Vue实例准备容器div引包<scriptsrc="https://cdn.jsdelivr.......
  • gofiber: 使用模板
    一,安装模板库$gogetgithub.com/gofiber/template/html/v2go:downloadinggithub.com/gofiber/template/html/v2v2.1.2go:downloadinggithub.com/gofiber/utilsv1.1.0go:addedgithub.com/gofiber/template/html/v2v2.1.2go:addedgithub.com/gofiber/utilsv1.1.0......
  • Solidity学习笔记-1
    01.HelloWorld开发工具Remix//SPDX-License-Identifier:MIT//软件许可,不写编译会出现警告//版本,“0.8.21”-->不能小于这个版本,"^"-->不能大于0.9.0pragmasolidity^0.8.21;//创建合约contractHelloWorld{stringpublichelloworld="HelloWorld!";}......
  • 54. 螺旋矩阵
    题目自己尝试了好几次,才通过了classSolution{public:vector<int>spiralOrder(vector<vector<int>>&matrix){vector<int>ans;intx=matrix.size(),y=matrix[0].size();intsx=0,ex=x-1,sy=0,ey=y-......
  • FA 科技:一种基于换根 + DFS 序的点分治下下位替代
    起因:cjx暑假集训的时候出了道题,老师说可以点分治。但是我最初的想法其实是换根处理,但怎么想发现都行不通,因为要同时维护DFS序和权值。于是就没想了。后来10.5和xyh进行长达30s的讨论导游的工作那题,说了我这个想法,xyh觉得有道理,对要求解的问题具体化,于是我才想出了分块......
  • 运动会
    运动会2024.11.14他说,每一天的日常都是故事,想让我帮他记下这一天发生的故事。我从来没有帮他写过这样的记录,我也不知道要记什么,她说,我觉得什么需要记录就写下来。晨他是被空调冷醒的,揣外阴雨绵绵,预案边的山上仍弥漫着晨间的雾气,用“早”或“晨”形容似乎不恰当,毕竟这里并没有......
  • 【数据运营】数据资产私域运营:探索并实现数据价值变现的新途径
             随着数字化浪潮的席卷,数据已成为现代企业的核心竞争力之一。然而,仅仅拥有数据并不足以在激烈的市场竞争中脱颖而出,关键在于如何有效地管理和运营这些数据资产,将其转化为实实在在的商业价值。本文将从数据资产私域运营的定义、价值、实施路径及实践案例等多个......
  • 20222426 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    202224262024-2025-1《网络与系统攻防技术》实验五实验报告1.实验内容1信息搜集定义:通过各种方式获取目标主机或网络的信息,属于攻击前的准备阶段。目的:收集目标主机的DNS信息、IP地址、子域名、旁站和C段、CMS类型、敏感目录、端口信息、操作系统版本、网站架构、漏洞信息、......
  • Java虚拟机JVM-程序计数器 讲解
    目录Java8的JVM内存结构程序计数器的功能程序技术器的具体细节class文件的字节码视图的内容程序计数器的特性Java8的JVM内存结构程序计数器的功能记录每个线程正在执行的字节码指令的地址,帮助JVM确定下一条需要执行的指令。程序技术器的具体细节class文件的......
  • 【OpenOCD 与 FT4232H 专栏 4 -- FT4232H 实现 USB 转 GPIO】
    文章目录FT4232H概述MPSSE功能应用示例GPIO控制通道C和D配置典型应用FT4232H概述FT4232H是一款由FTDI提供的多功能USB转串行接口芯片,广泛应用于各种电子和嵌入式系统中。它具有四个独立的通道,每个通道可以配置为不同的模式以支持多种通信协议。FT423......