声明!
学习视频来自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