05-4-shell脚本(1)脚本创建执行与变量使用

声明!

通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章,如涉及侵权马上删除文章,笔记只是方便各位师傅学习知识,以下网站、工具只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负.

文章为个人学习笔记。

进入Kali终端:

ctrl+alt+t

1、shell权限

1、第一种,需加权限

创建shell脚本文件:

  • 使用vim​编辑器创建一个名为1.sh​的shell脚本文件。

  • 命令:vim 1.sh​

    vim 1.sh
    

1.sh的内容。

echo longyu.com

脚本解释器的shebang:

  • 在脚本文件的第一行,可以指定使用哪种shell来执行脚本。常见的有/bin/bash​、/bin/dash​和/bin/sh​。

  • 这三种shebang(#!​)指令实际上在大多数情况下都会调用dash​,因为dash​通常被配置为/bin/sh​的链接。

检查/bin/sh​的链接:

  • 使用ls -l /bin/sh​命令可以查看/bin/sh​实际链接到的shell。

  • 在这个例子中,/bin/sh​链接到了dash​。

┌──(root㉿kali)-[~]
└─# ls -l /bin/sh
lrwxrwxrwx 1 root root 4  6月 5日 16:08 /bin/sh -> dash
                                                          

运行脚本:

  • 保存并退出vim​后,用户可以通过在终端中输入./1.sh​来运行这个脚本。

┌──(root㉿kali)-[~/work]
└─# ./1.sh
zsh: 权限不够: ./1.sh

提高权限。

┌──(root㉿kali)-[~/work]
└─# chmod 777 1.sh
                                                                                                               
┌──(root㉿kali)-[~/work]
└─# ls -la     
总计 16
drwxr-xr-x  3 root root 4096 11月14日 09:53 .
drwx------ 20 root root 4096 11月14日 09:53 ..
-rwxrwxrwx  1 root root   16 11月14日 09:52 1.sh
drwxr-xr-x  3 root root 4096 10月 4日 18:41 exam                                       

2、第二种,shell解释器的权限

创建新的shell脚本文件:

  • 用户可以创建一个新的名为2.sh​的shell脚本文件。

  • 使用vim​编辑器打开这个文件:vim 2.sh​。

创建2.sh文件

vim 2.sh

文本的内容

echo www.baidu.com

查看权限

┌──(root㉿kali)-[~/work]
└─# ls -la
总计 20
drwxr-xr-x  3 root root 4096 11月14日 10:20 .
drwx------ 20 root root 4096 11月14日 10:20 ..
-rwxrwxrwx  1 root root   16 11月14日 09:52 1.sh
-rw-r--r--  1 root root   20 11月14日 10:20 2.sh
drwxr-xr-x  3 root root 4096 10月 4日 18:41 exam

执行脚本:

  • 即使脚本没有执行权限,用户仍然可以通过sh 2.sh​命令来执行这个脚本。

  • 或者,用户也可以使用bash 2.sh​来执行脚本,这两者效果相同。

                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# sh 2.sh                 
www.baidu.com:
                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# bash 2.sh        
www.baidu.com:
                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# 

3、第三种,source

使用source​命令:

  • 用户可以使用source 2.sh​命令来执行脚本。

  • 这个命令与sh​命令执行脚本的效果差不多,但是source​命令会在当前的shell环境中执行脚本,而不是在一个新的shell环境中。

颜色加深标注:

  • 使用source​命令时,脚本中的命令会在当前的shell环境中执行,这可能会导致一些命令(如ls​)的输出颜色加深,因为它们是在当前shell环境中执行的。

创建新的shell脚本文件:

  • 用户可以创建一个新的名为3.sh​的shell脚本文件。

  • 使用vim​编辑器打开这个文件:vim 3.sh​。

创建3.sh文件

vim 3.sh

文本的内容

echo www.baidu.com
ls

运行3.sh

┌──(root㉿kali)-[~/work]
└─# sh 3.sh
www.baidu.com
1.sh  2.sh  3.sh  exam
                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# source  3.sh
www.baidu.com
1.sh  2.sh  3.sh  exam
                                  

2、变量声明和定义

设置变量

例子1

┌──(root㉿kali)-[~/work]
└─# name="xiaoyu"
                                                                                                               
┌──(root㉿kali)-[~/work]
└─# echo $name    
xiaoyu
  • 这行代码在shell中定义了一个名为name​的变量,并将其值设置为xiaoyu​。

  • 使用$​符号来引用变量,打印出变量name​的值,即xiaoyu​。

例子2

┌──(root㉿kali)-[~/work]
└─# age=27;echo $age
27
                                                                                                               
┌──(root㉿kali)-[~/work]
└─# age="27";echo $age
27
┌──(root㉿kali)-[~/work]
└─# age=xingyu;echo $age
xingyu   

首先设置变量age​的值为27​,然后立即打印这个值。

使用分号分隔命令

然后在下一行打印变量的值

总结:

  • 在同一行中执行多个命令时,需要使用分号(;​)来分隔命令。

  • 确保在引用变量时使用$​符号,这样shell会替换为变量的实际值。

例子3

┌──(root㉿kali)-[~/work]
└─# anme="xiaoyu"       
                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# age="27"            
                                                                                                                 
┌──(root㉿kali)-[~/work]
└─# echo "my name is $anme , and my age is $age years old"
my name is xiaoyu , and my age is 27 years old
                                                                                                                 
          

定义了一个名为anme​的变量,值设置为xiaoyu​

定义了一个名为age​的变量,并将其值设置为27​。

  • 这行代码使用echo​命令打印一条包含两个变量值的消息。

  • ​$anme​和$age​是变量的引用,它们会被替换为变量的实际值。

  • 由于变量anme​实际上是xiaoyu​,变量age​是27​,所以输出的消息是:my name is xiaoyu , and my age is 27 years old​。

┌──(root㉿kali)-[~/work]
└─# echo 'my name is $anme , and my age is $age years old'
my name is $anme , and my age is $age years old
                                                 
  • 这行代码使用echo​命令打印一条字符串。

  • 字符串中的$anme​和$age​是变量的占位符,它们应该被替换为变量的值。

  • 但是,由于字符串被单引号包围,shell不会对这些变量进行替换。

┌──(root㉿kali)-[~/work]
└─# echo my name is $anme , and my age is "$age" years old   
my name is xiaoyu , and my age is 27 years old

  • 这行代码使用echo​命令打印一条字符串,该字符串中包含了两个变量anme​和age​。

  • 变量$anme​没有被双引号包围,而变量$age​被双引号包围。

  • 即使变量anme​没有被双引号包围,它仍然被正确替换了,因为在shell中,变量的替换不受双引号的影响。双引号主要用于防止字符串中的某些字符被解释为特殊字符(例如,$​、`​、"​、\​等)。

──(root㉿kali)-[~/work]
└─# echo my name is "$anme", and my age is {$age} years old
my name is xiaoyu, and my age is {27} years old

  • 这行代码使用echo​命令打印一条字符串,该字符串中包含了两个变量anme​和age​。

  • 变量$anme​被正确地引用,并且被双引号包围。

  • 变量$age​被错误地引用,使用了大括号{}​而不是正确的$​符号。

查看变量

set

set | grep name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值