shell 脚本编写-运行脚本以及变量操作
声明: 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 微信公众号:泷羽sec
一、如何运行脚本
先来了解下运行脚本的几种方式
- 赋予执行权限:给文件加权有两种方式,都是使用
chmod
指令,chmod +x
或者chmod 777
两种
┌──(root㉿kali-linux-2024-2)-[/]
└─# vim 1.sh
┌──(root㉿kali-linux-2024-2)-[/]
└─# ./1.sh
zsh: 权限不够: ./1.sh
┌──(root㉿kali-linux-2024-2)-[/]
└─# chmod +x 1.sh #这里也可以使用chmod 777 1.sh 效果一样
┌──(root㉿kali-linux-2024-2)-[/]
└─# ls -la 1.sh
-rwxrwxr-x 1 root root 12 11月20日 16:31 1.sh
┌──(root㉿kali-linux-2024-2)-[/]
└─# ./1.sh
hello
2.** 使用shell解释器**:即通过sh
和source
这两个指令中一个来进行,两者区别在于sh
的输出没有颜色,而source
带有颜色例如:
#先编辑一个2.sh脚本,在里面输入相关指令这里用ls -a来示范
vim 2.sh #进入编辑页面
echo hello #在2.sh中写
ls -a #在2.sh中写
#这个时候可以查看一下会发现2.sh并没有执行权限,直接使用sh
sh 2.sh
#会发现他的输出不仅仅有hello还有ls -a的运行结果,只是颜色单一,换成source会不一样如下图
二、变量的使用
1.变量的声明和使用
变量的声明和使用都较为简单,这里举例说明一下:
┌──(root㉿kali-linux-2024-2)-[/]
└─# name="xiaoming"
┌──(root㉿kali-linux-2024-2)-[/]
└─# echo $name
xiaoming
┌──(root㉿kali-linux-2024-2)-[~]
└─# name="xiaoming" age="3"
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo my name is $name ,and my age is $age years old
my name is xiaoming ,and my age is 3 years old
echo
后面带或不带双引号包裹要打印的内容,效果是一样的,但是单引号的效果会不一样,使用单引号会将变量作为字符串一样直接输出,例如:
# 不使用引号
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo my name is $name ,and my age is $age years old
my name is xiaoming ,and my age is 3 years old
#使用双引号
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo "my name is $name ,and my age is $age years old"
my name is xiaoming ,and my age is 3 years old #使用单引号
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo 'my name is $name ,and my age is $age years old'
my name is $name ,and my age is $age years old
注意变量和后面的字符要有空格,负责会认为是一个新的变量
例如:
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo my name is $name ,and my age is $ageyears old
my name is xiaoming ,and my age is old
定义变量的时候不要带空格,不要使用数字开头
例如:
┌──(root㉿kali-linux-2024-2)-[~]
└─# 1name="xiaoming"
1name=xiaoming:未找到命令
┌──(root㉿kali-linux-2024-2)-[~]
└─# name age="xiaoming 3"
找不到命令 “name”
要用_
来进行连接一下比如:
┌──(root㉿kali-linux-2024-2)-[~]
└─# name_age="xiaoming 3"
#变量前要记得带$符
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo name_age
name_age
┌──(root㉿kali-linux-2024-2)-[~]
└─# echo $name_age
xiaoming 3
2. 查看已经定义的变量
这里使用的指令是set,直接输入set会发现返回的变量非常多不利于查找,这个时候使用set |grep 指定变量名
就可以很方便的找到
3.删除变量
使用unset name
对变量进行删除,运行完以后会发现,name变量不存在啦