40 个简单又有效的 Linux Shell 脚本示例

news2024/11/20 3:25:48

【收藏】Linux系统常用命令速查手册(附PDF下载方式)_linux命令大全详解pdf-CSDN博客

历史上,shell 一直是类 Unix 系统的本地命令行解释器。它已被证明是 Unix 的主要功能之一,并发展成为一个全新的主题。Linux 提供了各种功能强大的 shell,包括 Bash、Zsh、Tcsh 和 Ksh。这些外壳最令人惊讶的特性之一是其可编程性。创建简单而有效的 Linux shell 脚本来处理日常工作非常容易。

1.Hello World

程序员经常通过学习 hello world 程序来学习新语言。这是一个简单的程序,将字符串 “HelloWorld” 打印到标准输出中。然后,使用 vim 或 nano 等编辑器创建 hello-world.sh 文件,并将以下行复制到其中。

#!/bin/bash
echo "Hello World"

保存并退出文件。接下来,您需要使用以下命令使该文件可执行。

$ chmod a+x hello-world.sh

可以使用以下两个命令中的任何一个来运行此命令。

$ bash hello-world.sh
$ ./hello-world.sh

它将打印出传递给脚本内部回显的字符串。

2.使用 echo 打印

echo 命令用于在 bash 中打印信息。它类似于 C 函数 “printf”,并提供了许多常见选项,包括转义序列和重定向。将以下行复制到名为 echo.sh 的文件中,并使其可执行,如上所述。

#!/bin/bash
echo "Printing text"
echo -n "Printing text without newline"
echo -e "\nRemoving \t special \t characters\n"

运行脚本以查看其功能。-e 选项用于告诉 echo 传递给它的字符串包含特殊字符,需要扩展功能。

3.使用注释

注释对文档很有用,是高质量代码库的要求。将注释放在处理关键逻辑的代码中是一种常见的做法。要注释掉一行,只需在其前面使用 #(hash)字符。例如,请查看下面的 bash 脚本示例。

#!/bin/bash

# Adding two values
((sum=25+35))

#Print the result
echo $sum

此脚本将输出数字 60。首先,在某些行之前使用 #检查注释的使用方式。不过,第一行是一个例外。它被称为 shebang,让系统知道在运行这个脚本时要使用哪个解释器。

4.多行注释

许多人使用多行注释来记录他们的 shell 脚本。在下一个名为 comment.sh 的脚本中检查这是如何完成的。

#!/bin/bash
: '
This script calculates
the square of 5.
'
((area=5*5))
echo $area

注意多行注释是如何放置在内部的:“和” 字符。

5.While 循环

while 循环构造用于多次运行某些指令。查看以下名为 while.sh 的脚本,以更好地理解此概念。

#!/bin/bash
i=0

while [ $i -le 2 ]
do
echo Number: $i
((i++))
done

因此,while 循环采用以下形式。

while [ condition ]
do
commands 1
commands n
done

方括号周围的空格是必填的。

6.For 循环

for 循环是另一种广泛使用的 bashshell 构造,它允许用户高效地迭代代码。下面演示了一个简单的示例。

#!/bin/bash

for (( counter=1; counter<=10; counter++ ))
do
echo -n "$counter "
done

printf "\n"

7.接收用户输入

#!/bin/bash

echo -n "Enter Something:"
read something

echo "You Entered: $something"

8.If 语句

if CONDITION 
then
STATEMENTS
fi

只有当条件为真时,才会执行这些语句。fi 关键字用于标记 if 语句的结尾。下面显示了一个快速示例。

> #!/bin/bash
> echo -n "Enter a number:"
> read num
> if [[$num -gt 10]]
> then
> echo "Number is greater than 10."
> fi

如果通过输入提供的数字大于 10,上述程序将仅显示输出。-gt 表示大于;类似地 - lt 表示小于 - le 表示小于等于;且 - ge 表示大于等于。此外,还需要 [[]]。

9.使用 If Else 进行更多控制

将 else 构造与 if 结合起来,可以更好地控制脚本的逻辑。下面显示了一个简单的示例。

#!/bin/bash

read n
if [ $n -lt 10 ];
then
echo "It is a one digit number"
else
echo "It is a two digit number"
fi

其他部分需要放在 if 的动作部分之后和 fi 之前。

10.使用 AND 运算符

AND 运算符允许我们的程序检查是否同时满足多个条件。由 AND 运算符分隔的所有部分必须为 true。否则,包含 AND 的语句将返回 false。查看下面的 bash 脚本示例,以更好地了解 AND 的工作原理。

#!/bin/bash

echo -n "Enter Number:"
read num

if [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; then
echo "Even Number"
else
echo "Odd Number"
fi

AND 运算符由 && 符号表示。

11.使用 OR 运算符

OR 运算符是另一个关键的构造,它允许我们在脚本中实现复杂、健壮的编程逻辑。与 AND 相反,当 OR 运算符的任一操作数为真时,由 OR 运算符组成的语句返回真。仅当由 OR 分隔的每个操作数为假时,它才返回假。

#!/bin/bash

echo -n "Enter any number:"
read n

if [[ ( $n -eq 15 || $n -eq 45 ) ]]
then
echo "You won"
else
echo "You lost!"
fi

这个简单的示例演示了 OR 运算符如何在 Linuxshell 脚本中工作。只有当用户输入数字 15 或 45 时,它才会宣布用户为获胜者。|| 符号表示 OR 运算符。

12.使用 El if

elif 语句代表 else if,并为实现链逻辑提供了一种方便的方法。通过评估以下示例,了解 elif 的工作原理。

#!/bin/bash

echo -n "Enter a number: "
read num

if [[ $num -gt 10 ]]
then
echo "Number is greater than 10."
elif [[ $num -eq 10 ]]
then
echo "Number is equal to 10."
else
echo "Number is less than 10."
fi

上面的程序是不言自明的,所以我们不会逐行剖析它。相反,更改脚本中的变量名称和值等部分,以检查它们如何一起工作。

13.case 条件

. switch 构造是 Linux bash 脚本提供的另一个强大功能。它可以用于需要嵌套条件的地方,但不希望使用复杂的 if-else elif 链。看看下一个例子。

#!/bin/bash

echo -n "Enter a number: "
read num

case $num in
100)
echo "Hundred!!" ;;
200)
echo "Double Hundred!!" ;;
*)
echo "Neither 100 nor 200" ;;
esac

条件写在 case 和 esac 关键字之间。*)用于匹配除 100 和 200 以外的所有输入。

14.命令行参数

在许多情况下,直接从命令 shell 获取参数是有益的。下面的示例演示了如何在 bash 中执行此操作。

#!/bin/bash
echo "Total arguments : $#"
echo "First Argument = $1"
echo "Second Argument = $2"

运行此脚本时,在其名称后添加两个附加参数。我将其命名为 test.sh,调用过程概述如下。

$ ./test.sh Hey Howdy

因此,1、用于访问第一个参数;2、用于访问第二个参数,依此类推。最后,3、用于获取参数总数。

15.使用名称获取参数

下面的示例显示了如何获取带有名称的命令行参数。

#!/bin/bash

for arg in "$@"
do
index=$(echo $arg | cut -f1 -d=)
val=$(echo $arg | cut -f2 -d=)
case $index in
X) x=$val;;
Y) y=$val;;
*)
esac
done
((result=x+y))
echo "X+Y=$result"

将此脚本命名为 test.sh,并按如下所示调用它。

$ ./test.sh X=44 Y=100

它应该返回 X+Y=144。这里的参数存储在 “$@” 中,脚本使用 Linuxcut 命令获取它们。

16.连接字符串

字符串处理对于广泛的现代 bash 脚本来说非常重要。值得庆幸的是,它在 bash 中更加舒适,并允许以更精确、简洁的方式实现这一点。请参见下面的示例,了解 bash 字符串连接。

#!/bin/bash

string1="Ubuntu"
string2="Pit"
string=$string1$string2
echo "$string is a great resource for Linux beginners."

17.字符串截取

与许多编程语言不同,bash 不提供任何用于剪切字符串部分的内置函数。然而,下面的示例演示了如何使用参数展开来实现这一点。

#!/bin/bash
Str="Learn Bash Commands from UbuntuPit"
subStr=${Str:0:20}
echo $subStr

该脚本应打印出 “学习 Bash 命令” 作为其输出。参数展开形式为 ${VAR_NAME:S:L}。这里,S 表示起始位置,L 表示长度。

18.使用 cut 做截取

可以在脚本中使用 Linux cut 命令来截取字符串的一部分,也就是子字符串。下一个示例显示了如何做到这一点。

#!/bin/bash
Str="Learn Bash Commands from UbuntuPit"
#subStr=${Str:0:20}

subStr=$(echo $Str| cut -d ' ' -f 1-3)
echo $subStr

19.添加两个值

在 Linux shell 脚本中执行算术运算非常容易。下面的示例演示了如何从用户接收两个数字作为输入并将它们相加。

#!/bin/bash
echo -n "Enter first number:"
read x
echo -n "Enter second number:"
read y
(( sum=x+y ))
echo "The result of addition=$sum"

如您所见,在 bash 中添加数字相当简单。

20.添加多个值

您可以使用循环获取多个用户输入并将其添加到脚本中。以下示例显示了这一点。

#!/bin/bash
sum=0
for (( counter=1; counter<5; counter++ ))
do
echo -n "Enter Your Number:"
read n
(( sum+=n ))
#echo -n "$counter "
done
printf "\n"
echo "Result is: $sum"

但是,省略 (()) 将导致字符串串联而不是相加。所以,在你的程序中检查类似的情况。

21.Bash 中的函数

与任何编程方言一样,函数在 Linux shell 脚本中扮演着重要角色。它们允许管理员创建自定义代码块以供频繁使用。下面的演示将概述函数如何在 Linux bash 脚本中工作。

#!/bin/bash
function Add()
{
echo -n "Enter a Number: "
read x
echo -n "Enter another Number: "
read y
echo "Adiition is: $(( x+y ))"
}

Add

这里我们像以前一样添加了两个数字。但在这里,我们使用了一个名为 Add 的函数来完成这项工作。因此,每当您需要再次添加时,只需调用此函数,而不必再次编写该部分。

22.具有返回值的函数

最神奇的功能之一是允许数据从一个函数传递到另一个函数。它在各种场景中都很有用。查看下一个示例。

#!/bin/bash

function Greet() {

str="Hello $name, what brings you to UbuntuPit.com?"
echo $str
}

echo "-> what's your name?"
read name

val=$(Greet)
echo -e "-> $val"

这里,输出包含从 Greet()函数接收的数据。

23.从 Bash 脚本创建目录

使用 shell 脚本运行系统命令的能力使开发人员的工作效率大大提高。下面的简单示例将向您展示如何在 shell 脚本中创建目录。

#!/bin/bash
echo -n "Enter directory name ->"
read newdir
cmd="mkdir $newdir"
eval $cmd

该脚本只需调用标准 shell 命令 mkdir,并在仔细查看时将目录名传递给它。这个程序应该在文件系统中创建一个目录。您还可以传递命令以在 backticks(“)内部执行,如下所示。

`mkdir $newdir`

24.确认存在后创建目录

如果当前工作目录中已包含同名文件夹,则上述程序将无法运行。例如,下面的程序将检查是否存在名为 $dir 的文件夹,如果找不到,则只创建一个。

#!/bin/bash
echo -n "Enter directory name ->"
read dir
if [ -d "$dir" ]
then
echo "Directory exists"
else
`mkdir $dir`
echo "Directory created"
fi

使用 eval 编写此程序以提高 bash 脚本编写技能。

25.读取文件

Bash 脚本允许用户非常有效地读取文件。下面的示例将展示如何使用 shell 脚本读取文件。首先,创建一个名为 editors.txt 的文件,其中包含以下内容。

1. Vim 
2. Emacs 
3. ed 
4. nano 
5. Code

此脚本将输出上述 5 行中的每一行。

#!/bin/bash
file='editors.txt'
while read line; do
echo $line
done < $file

26.删除文件

以下程序将演示如何在 Linux shell 脚本中删除文件。程序将首先要求用户提供文件名作为输入,如果文件名存在,则将其删除。Linux rm 命令在此处执行删除操作。

#!/bin/bash
echo -n "Enter filename ->"
read name
rm -i $name

让我们输入 editors.txt 作为文件名,并在要求确认时按 y。它应该删除该文件。

27.附加到文件

下面的 shell 脚本示例将向您展示如何使用 bash 脚本将数据附加到文件系统上的文件。它向早期的 editors.txt 文件添加了一行。

#!/bin/bash
echo "Before appending the file"
cat editors.txt
echo "6. NotePad++" >> editors.txt
echo "After appending the file"
cat editors.txt

现在您应该注意到,我们直接从 Linux bash 脚本使用日常终端命令。

28.测试文件存在

下一个 shell 脚本示例显示如何检查 bash 程序中文件的存在。

#!/bin/bash
filename=$1
if [ -f "$filename" ]; then
echo "File exists"
else
echo "File does not exist"
fi

我们直接从命令行传递文件名作为参数。

29.从 Shell 脚本发送邮件

从 bash 脚本发送电子邮件非常简单。下面的简单示例将演示一种从 bash 应用程序执行此操作的方法。

#!/bin/bash
recipient=”admin@example.com”
subject=”Greetings”
message=”Welcome to UbuntuPit”
`mail -s $subject $recipient <<< $message`

它将向收件人发送包含给定主题和消息的电子邮件。

30.解析日期和时间

下一个 bash 脚本示例将向您展示如何使用脚本处理日期和时间。同样,Linuxdate 命令用于获取必要的信息,我们的程序执行解析。

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
hour=`date +%H`
minute=`date +%M`
second=`date +%S`
echo `date`
echo "Current Date is: $day-$month-$year"
echo "Current Time is: $hour:$minute:$second"

运行此程序以了解其工作原理。此外,尝试从终端运行 date 命令。

31.sleep 命令

sleep 命令允许 shell 脚本在指令之间暂停。它在许多场景中都很有用,例如执行系统级作业。下一个示例显示了 shell 脚本中的 sleep 命令。

#!/bin/bash
echo "How long to wait?"
read time
sleep $time
echo "Waited for $time seconds!"

该程序暂停最后一条指令的执行,直到 $time 秒,在本例中,用户提供了这一点。

32.wait 命令

wait 命令用于暂停 Linux bash 脚本中的系统进程。查看下面的示例,详细了解这在 bash 中的工作方式。

#!/bin/bash
echo "Testing wait command"
sleep 5 &
pid=$!
kill $pid
wait $pid
echo $pid was terminated.

33.显示上次更新的文件

有时,您可能需要为某些操作查找最后更新的文件。下面的简单程序向我们展示了如何在 bash 中使用 awk 命令执行此操作。它将列出当前工作目录中最近更新或创建的文件。 #!/bin/bash

ls -lrt | grep ^- | awk 'END{print $NF}'

为了简单起见,我们将避免在本示例中描述 awk 的功能。相反,您可以简单地复制此代码来完成任务。

34.添加批处理扩展

下面的示例将对目录中的所有文件应用自定义扩展名。创建一个新目录,并将一些文件放在其中以供演示。我的文件夹共有五个文件,每个文件名为 test,后跟(0-4)。我已将此脚本编程为在文件末尾添加(.UP)。您可以添加所需的任何扩展名。

#!/bin/bash
dir=$1
for file in `ls $1/*`
do
mv $file $file.UP
done

首先,不要从任何常规目录尝试此脚本;相反,请从测试目录运行此命令。此外,您需要提供文件的目录名作为命令行参数。对当前工作目录使用句点(.)。

35.打印文件或目录的数量

下面的 Linuxbash 脚本查找给定目录中存在的文件或文件夹的数量。它使用 Linux find 命令来执行此操作。首先,需要传递目录名以从命令行搜索文件。

#!/bin/bash

if [ -d "$@" ]; then
echo "Files found: $(find "$@" -type f | wc -l)"
echo "Folders found: $(find "$@" -type d | wc -l)"
else
echo "[ERROR] Please retry with another folder."
exit 1
fi

如果指定的目录不可用或存在权限问题,程序将要求用户重试。

36.清理日志文件

下一个简单的示例演示了在现实生活中使用 shell 脚本的简便方法。该程序只需删除 / var/log 目录中的所有日志文件。您可以更改保存此目录的变量以清理其他日志。

#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp
echo "Logs cleaned up."

请记住以 root 身份运行此 Linuxshell 脚本。

37.使用 Bash 备份脚本

Shell 脚本提供了一种强大的方法来备份文件和目录。以下示例将备份过去 24 小时内修改的每个文件或目录。该程序使用 find 命令执行此操作。

#!/bin/bash

BACKUPFILE=backup-$(date +%m-%d-%Y)
archive=${1:-$BACKUPFILE}

find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
exit 0

备份过程成功后,它将打印文件和目录的名称。

38.检查你是否是 root 用户

下面的示例演示了通过 Linux bash 脚本快速确定用户是否为 root 用户的方法。

#!/bin/bash
ROOT_UID=0

if [ "$UID" -eq "$ROOT_UID" ]
then
echo "You are root."
else
echo "You are not root"
fi
exit 0

此脚本的输出取决于运行它的用户。它将根据 $UID 匹配根用户。

39.从文件中删除重复行

文件处理需要相当长的时间,并在许多方面阻碍了管理员的工作效率。例如,在文件中搜索重复项可能会成为一项艰巨的任务。幸运的是,您可以使用一个简短的 shell 脚本来完成此操作。

#! /bin/sh

echo -n "Enter Filename-> "
read filename
if [ -f "$filename" ]; then
sort $filename | uniq | tee sorted.txt
else
echo "No $filename in $pwd...try again"
fi
exit 0

上面的脚本逐行遍历文件并删除所有重复的行。然后,它将新内容放入新文件,并保持原始文件的完整性。

40.系统维护

我经常使用一个小的 Linuxshell 脚本来升级我的系统,而不是手动升级。下面的简单 shell 脚本将向您展示如何做到这一点。

#!/bin/bash

echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n"

apt-get update
apt-get -y upgrade

apt-get -y autoremove
apt-get autoclean

echo -e "\n$(date "+%T") \t Script Terminated"

该脚本还处理不再需要的旧包。您需要使用 sudo 运行此脚本,否则它将无法正常工作。

1

end

来源:https://blog.csdn.net/weixin_38889300/article/details/129828412
(版权归原作者所有)

— 年度热文 —

网工基础测试题,你能全对吗?

图片

这份华为以太网接口配置命令太真香了!

图片

一款功能齐全的网管软件:Ip-tools

图片

linux运维必备,100道常见面试题

图片

超强linux学习笔记,值得一看(附PDF下载)

图片

一次Ping1000个IP会怎么样?

图片

5 种 Linux 安装包管理工具中文手册!抓紧看!

图片


【公众号】厦门微思网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 20.有效括号 详解(c语言实现) (⌯꒪꒫꒪)੭

题目详情&#xff1a; 思路&#xff1a;Step1:如果是左括号&#xff0c;入栈 Step2:如果是右括号&#xff0c;就出栈顶的元素与右括号进行比对&#xff0c;如果匹配&#xff0c;继续&#xff0c;直到都匹配成功结束。否则退出&#xff0c;直接返回false. 栗子&#xff1a;1. {…

C#之反编译之路(一)

本文将介绍微软反编译神器dnSpy的使用方法 c#反编译之路(一) dnSpy.exe区分64位和32位,所以32位的程序,就用32位的反编译工具打开,64位的程序,就用64位的反编译工具打开(个人觉得32位的程序偏多,如果不知道是32位还是64位,就先用32位的打开试试) 目前只接触到wpf和winform的桌…

Redis (三)

1、redis复制 简单的概括就是主从复制&#xff0c;master以写为主&#xff0c;Slave以读为主&#xff0c;当master数据发生变化的时候&#xff0c;自动将更新的数据异步同步到其他的slave是数据库。 使用这种机制的话&#xff0c;可以做到读写分离&#xff0c;可以减轻主机负担…

DDoS攻击的多种方式

DDOS攻击指分布式拒绝服务攻击&#xff0c;即处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的&#xff0c;这类攻击称为分布式拒绝服务…

大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…

提升网络安全重要要素IP地址

在数字化时代&#xff0c;网络安全已经成为人们关注的焦点。本文将深入探讨网络安全与IP地址之间的紧密联系&#xff0c;以及IP地址在构建数字世界的前沿堡垒中的关键作用。 网络安全是当今数字社会中不可忽视的挑战之一。而IP地址&#xff0c;作为互联网通信的基础协议&#…

震惊!原来这就是JavaScript闭包的秘密

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

第一届能源电子产业创新大赛太阳能光伏赛道决赛及颁奖仪式在宜宾成功举办

在工业和信息化部电子信息司指导下&#xff0c;由工业和信息化部产业发展促进中心和宜宾市人民政府主办&#xff0c;宜宾市经济和信息化局、宜宾高新技术产业园区管理委员会承办的第一届能源电子产业创新大赛太阳能光伏赛道决赛及颁奖仪式于2024年1月3日-5日在宜宾市成功举办。…

DDIA 第十一章:流处理

本文是《数据密集型应用系统设计》&#xff08;DDIA&#xff09;的读书笔记&#xff0c;一共十二章&#xff0c;我已经全部阅读并且整理完毕。 采用一问一答的形式&#xff0c;并且用列表形式整理了原文。 笔记的内容大概是原文的 1/5 ~ 1/3&#xff0c;所以你如果没有很多时间…

2023年后,AI 还有什么研究方向有前景?

什么是AI ​ AI代表人工智能&#xff0c;它是指通过计算机科学技术使机器能够执行需要智力的任务的一种技术。这些任务包括学习、推理、问题解决和感知等&#xff0c;通常是人类智能的表现。人工智能的目标是使计算机系统能够执行需要人类智力的任务&#xff0c;而不需要人类的…

C语言实用第三方库Melon开箱即用之多线程模型

在之前的文章中&#xff08;开发利器——C 语言必备实用第三方库&#xff09;&#xff0c;笔者介绍了一款Linux/UNIX下C语言库Melon的基本功能&#xff0c;并给出了一个简单的多进程开箱即用的例子。 本文将给大家介绍Melon中多线程的使用方法。 在Melon中有三种多线程模式&a…

点对点SDWAN组网:通过专线连接实现企业分支互联

点对点SDWAN是一种通过软件定义网络技术将企业分支互联的组网解决方案。在点对点SDWAN中&#xff0c;企业分支通过专线连接实现互联&#xff0c;以满足对网络性能和可靠性的要求。 传统的WAN架构通常使用MPLS&#xff08;多协议标签交换&#xff09;技术来实现企业分支的互联。…

TransmittableThreadLocal使用踩坑

背景&#xff1a;为了获取相关字段方便&#xff0c;项目里使用了TransmittableThreadLocal上下文&#xff0c;在异步逻辑中get值时发现并非当前请求的值&#xff0c;且是偶发状况(并发问题)。 发现&#xff1a;TransmittableThreadLocal是阿里开源的可以实现父子线程值传递的工…

鸿蒙系列--动态共享包的依赖与使用

一、前言 HarmonyOS的共享包相当于Android的Library&#xff0c;在HarmonyOS中&#xff0c;给开发者提供了两种共享包&#xff0c;HAR&#xff08;Harmony Archive&#xff09;静态共享包&#xff0c;和HSP&#xff08;Harmony Shared Package&#xff09;动态共享包 区别&…

记一次 .NET 某新能源材料检测系统 崩溃分析

一&#xff1a;背景 1. 讲故事 上周有位朋友找到我&#xff0c;说他的程序经常会偶发性崩溃&#xff0c;一直没找到原因&#xff0c;自己也抓了dump 也没分析出个所以然&#xff0c;让我帮忙看下怎么回事&#xff0c;那既然有 dump&#xff0c;那就开始分析呗。 二&#xff…

计算机创新协会冬令营——暴力枚举题目05

这道题挺基础但是挺多坑的。(•́へ•́╬) 题目 204. 计数质数 - 力扣&#xff08;LeetCode&#xff09; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质…

具有大电流,双通道 12V,短地短电源保护等功能的国产芯片GC8549 可替代ONSEMI的LV8548/LV8549

GC8549 可以工作在 3.8~12V 的电源电压上&#xff0c;每 通道能提供高达 1.5A 持续输出电流或者 2.5A 峰值 电流&#xff0c;睡眠模式下功耗小于 1uA。具有 PWM&#xff08;IN/EN&#xff09;输入接口,与行业标 准器件兼容&#xff0c;并具有过温保护&#xff0c;欠压保护&…

信息系统项目管理师好考吗?知识点分析与讲解,码住!

科目一&#xff1a;综合知识考试 科目一考试是由选择题组成的&#xff0c;共有75道题目。考试时间为早上9点到11点半&#xff0c;可以提前交卷&#xff0c;通常11点左右就能离开考场。对于会做的题目&#xff0c;要及时解答&#xff0c;对于不会做的题目&#xff0c;花费过多时…

QC/PD快充电源产品MOS选型分析

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术&#xff0c;有利于提高系统效 率&#xff0c; 以及更佳的EAS和EMI等特性&#xff0c;对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路&#xff0c;相比肖特基二极管整流能有更低的 损耗&#xff0c;有…

pinia 给 state 指定变量类型

pinia 给 state 指定变量类型 问题描述 自从用 vitetsvue3 以来&#xff0c;我一直有一个很大的疑问&#xff0c;就是 pinia 中的 state 变量类型该从哪定义&#xff0c;如何定义它&#xff1f; 因为我在使用未定义类型的 state 变量的时候一直会有一个提示&#xff0c;提示说…