声明:
本文的学习内容来源于B站up主“泷羽sec”视频“shell脚本(1)脚本创建执行与变量使用”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
1 脚本编写
首先建立一个1.sh
文件
vim 1.sh
可以利用#! /bin/bash
,#! /bin/dash
,#! /bin/sh
这三种其实不管用哪种脚本解释器,最后调用的都还是dash
比如ls -l /bin/sh
发现调用的还是dash
修改1.sh
,添加如下代码,:wq
保存
echo "hello world"
2 脚本运行
2.1 方法一
修改文件权限,给拥有者添加运行权限
chmod u+x 1.sh
运行一下1.sh
./1.sh
2.2 方法二
在没有权限的情况下,可以使用bash
、sh
或者dash
运行
当你使用
bash script.sh
、sh script.sh
或dash script.sh
命令时,实际上是通过对应的解释器程序(如bash
、sh
或dash
)去读取并执行script.sh
文件中的内容。这种情况下,操作系统并不要求script.sh
本身具备执行权限,因为是解释器进程在执行脚本文件,而不是直接执行文件。
解释器只需要对脚本文件有读取权限(chmod +r
),而不需要执行权限,因此即使脚本文件没有执行权限,也能运行。
2.3 方法三
修改文件加一行命令
ls -l
利用source
命令会对输出结果加深标注
3 临时变量
3.1 临时变量命名规则
- 大小写敏感:
- Shell变量区分大小写,例如
var
和VAR
是两个不同的变量。
- Shell变量区分大小写,例如
- 以字母或下划线开头:
- 变量名必须以字母(A-Z 或 a-z)或下划线
_
开头,不能以数字或其他特殊字符开头。 - 正确示例:
_tempVar
,var1
- 错误示例:
1var
,-temp
- 变量名必须以字母(A-Z 或 a-z)或下划线
- 仅包含字母、数字和下划线:
- 变量名只能由字母(A-Z 或 a-z)、数字(0-9)和下划线
_
组成,不能包含其他符号或空格。 - 正确示例:
temp_var
,TEMP123
- 错误示例:
temp-var
,temp var
- 变量名只能由字母(A-Z 或 a-z)、数字(0-9)和下划线
- 避免使用Shell保留字:
- 不要使用Shell的关键字或内置命令(如
if
,then
,else
,do
,done
,case
等)作为变量名,以免引发错误。
- 不要使用Shell的关键字或内置命令(如
3.2 变量声明
定义一个name
变量,等号左右两边不能有空格
name="xiaoyu"
输出name
变量
echo $name
定义一个age
变量
age="27"
输出name
变量
echo $age
复杂点的比如说
echo my name is $name, and my age is $age years old
加双引号和不加的效果是一样的
echo "my name is $name, and my age is $age years old"
加单引号会吧$name
和$age
直接当字符串输出
echo 'my name is $name, and my age is $age years old'
如果想变量和字符之间没有空格,可以将变量用双引号括起来
echo "my name is $name, and my age is "$age"years old"
或者使用不能作为变量名的符号将变量和字符间隔开,例如{ } ' ; :
等等都可以
echo "my name is $name, and my age is {$age}years old"
3.2 变量查看
使用set
命令查看所有变量
set
配合grep
查找变量
set | grep name
3.3 变量删除
删除指定变量
unset name
再次查找就没有了
set | grep name