Skip to content
公告

bash知识

SHC加密脚本

wget https://file.nastool.work/shc-3.8.9.tgz -O /root/vitepress/00_Bash/shc/shc-3.8.9b.tgz

tar -vxf /root/vitepress/00_Bash/shc/shc-3.8.9b.tgz -C /root/vitepress/00_Bash/shc

cd /root/vitepress/00_Bash/shc/shc-3.8.9b

sudo mkdir -p /usr/local/man/man1/

sudo make install

which shc

wget http://47.97.11.31:6008/run.sh -O /root/vitepress/00_Bash/shc/run.sh

shc -r -f /root/vitepress/00_Bash/shc/run.sh

shc -r -f /root/vitepress/00_Bash/shc/kami.sh

shc -r -f /root/vitepress/00_Bash/host/auto_host.sh

JS弹窗库

js
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

html页面必备

一个中文,一个是首届窗口自适应

html
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

bash脚本的变量导入

如果你想要从另一个脚本(A脚本)中传递变量d1到当前脚本,并且修改当前脚本中的d1变量,有几种方法可以实现这一点。以下是一些常见的方法:

方法 1: 通过环境变量

在A脚本中,你可以在导出d1变量之前设置它的值,然后运行当前脚本。例如:

A脚本:

bash
#!/bin/bash  
  
# 设置并导出d1变量  
export d1="/my/custom/path"  
  
# 运行当前脚本  
bash current_script.sh

当前脚本:

bash
#!/bin/bash  
  
# 检查d1环境变量是否设置,如果没有设置则使用默认值  
if [ -z "$d1" ]; then  
    d1=""  
else  
    echo "d1变量从A脚本传递过来,其值为: $d1"  
fi  
  
# 脚本的其余部分...

方法 2: 通过命令行参数

你可以在A脚本中通过命令行参数将d1的值传递给当前脚本。

A脚本:

bash
#!/bin/bash  
  
d1="/my/custom/path"  
  
# 通过命令行参数传递d1给当前脚本  
bash current_script.sh "$d1"

当前脚本:

bash
#!/bin/bash  
  
# 读取命令行参数到d1变量  
d1=$1  
  
# 检查d1是否设置,如果没有设置则使用默认值  
if [ -z "$d1" ]; then  
    d1=""  
else  
    echo "d1变量从A脚本通过命令行参数传递,其值为: $d1"  
fi  
  
# 脚本的其余部分...

方法 3: 通过文件

A脚本可以将d1的值写入一个文件,然后当前脚本可以从该文件中读取这个值。

A脚本:

bash
#!/bin/bash  
  
d1="/my/custom/path"  
  
# 将d1的值写入文件  
echo "$d1" > d1_value.txt  
  
# 运行当前脚本  
bash current_script.sh

当前脚本:

bash
#!/bin/bash  
  
# 从文件中读取d1的值  
if [ -f "d1_value.txt" ]; then  
    d1=$(cat d1_value.txt)  
    echo "d1变量从A脚本通过文件传递,其值为: $d1"  
else  
    d1=""  
fi  
  
# 脚本的其余部分...

选择哪种方法取决于你的具体需求和偏好。环境变量方法适合在多个脚本或命令之间共享配置,命令行参数方法更加显式且容易理解,而文件方法则可以在不同进程或用户之间共享数据。

Heredoc

heredoc 是一种在 shell 脚本或命令行中创建多行字符串的方法。它的名字来源于 "here document",表示文档就在此处。这种方法特别适用于需要将多行文本传递给命令的情况,如邮件、配置文件或脚本的输入等。

cat << 'EOF' 的语法是 heredoc 的一种常见形式,其中 cat 是一个用于输出文本内容的命令,<< 是 shell 中的一个重定向操作符,用于指示后面跟随的是一个 heredoc 区块,'EOF' 是一个界定符,用于标记 heredoc 区块的开始和结束。

具体来说,当你输入 cat << 'EOF' 后,shell 会等待你输入多行文本,直到遇到一个单独的 EOF 行为止。这个 EOF 行不会被包含在输出中,它只是用来标记 heredoc 区块的结束。然后,cat 命令会将这个 heredoc 区块的内容输出到标准输出(通常是终端)。

需要注意的是,界定符(在这个例子中是 EOF)可以是任意字符串,只要它在 heredoc 区块的开始和结束处保持一致就行。同时,如果界定符被引号包围(如 'EOF'),则 heredoc 区块内的变量替换和命令替换将不会被执行。如果去掉引号(如 EOF),则这些替换将会被执行。

下面是一个简单的例子:

bash
cat << 'EOF'  
This is a heredoc block.  
It contains multiple lines of text.  
Variables like $HOME will not be expanded.  
Commands like $(date) will not be executed.  
EOF

当你运行这个脚本时,它会原样输出 heredoc 区块中的内容,而不会对 $HOME$(date) 进行任何替换或执行。如果你去掉界定符周围的引号,那么这些替换就会被执行。

参考文献:Heredoc 入门

case语句

在bash脚本中,case语句用于执行多个不同的命令,基于变量的值

下面是一个具体的例子,展示了如何使用case语句:

bash
#!/bin/bash  
  
# 读取用户输入  
read -p "请输入一个数字: " number  
  
# 使用case语句处理用户输入  
case $number in  
    1)  
        echo "你输入了1"  
        ;;  
    2)  
        echo "你输入了2"  
        ;;  
    3)  
        echo "你输入了3"  
        ;;  
    *)  
        echo "你输入的不是1、2或3"  
        ;;  
esac

在这个例子中,脚本会提示用户输入一个数字。然后,它会使用case语句来检查用户输入的数字,并输出相应的消息。如果用户输入的不是1、2或3,它会输出一个默认消息。

本博客为分享文档,仅供个人学习参考。