shell的变量及赋值

文章目录

  • 一,shell变量是什么
  • 二,自定义变量
    • 1 . 查看和引用变量的值
    • 2 . echo选项
    • 3 . unset
    • 4 . 特殊符号
    • 5 . 括号
  • 三,交互式定义变量
    • 1 . read
    • 2 . read 选项
  • 四,变量的范围
    • 1 . export命令
  • 五,数值变量的运算及特殊变量
    • 1 . 可以算加减乘除
    • 2 . 变量运算
    • 3 . 使用shll脚本运算
    • 4 . (())
      • 4.1 基本用法
    • 5 . []
  • 六,let命令
  • 七,dc
  • 八,环境变量
    • 1 . 环境变量的特点
    • 2 . 常见的环境变量
  • 九,只读变量
  • 十,位置变量
  • 十一,预定义变量

一,shell变量是什么

  • 用来临时保存数据的,并且该数据时可以变化的,任何一个语言都离不开变量,如果某个内容需要多次使用并且会重复出现,这样就可以使用变量了,如果需要修改直接修改变量。
  • 常见 Shell 变量的类型有:自定义变量、环境变量、只读变量、位置变量、预定义变量。

二,自定义变量

  • 自定义变量(User-defined variables)是由用户在脚本中定义并赋值的变量。它们用于存储和操作数据,可以是字符串、数字、数组等类型。自定义变量的使用可以提高脚本的可读性和可维护性。
  • 在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋给初始值(内容)即可。

格式
屏幕截图 2024-07-16 145409.png
符号两边不能有空格,名称中不能包含特殊符号,如 + - * / ? % & #
变量名:临时存放数据的地方
变量值:临时的可变化的数据

1 . 查看和引用变量的值

在变量名称前面加符号$,就可以引用变量的值,使用echo命令查看

[root@localhost ~]# lllllll=123456
[root@localhost ~]# xxxxxxx=xl
[root@localhost ~]# echo $lllllll $xxxxxxx
123456 xl

2 . echo选项

-n 表示不换行输出
-e 输出转义字符,将转义后的内容输出到屏幕上,转义符\c(不换行输出)、\n(换行)、\t(插入制

[root@localhost ~]# echo -e "hello\n"
hello[root@localhost ~]# echo -e "hello\t"
hello	
[root@localhost ~]# echo -n hello
hello[root@localhost ~]# 

3 . unset

取消定义

[root@localhost ~]# asa=1152
[root@localhost ~]# echo $asa
1152
[root@localhost ~]# unset asa
[root@localhost ~]# bsb=1152
[root@localhost ~]# echo $bsb
1152

4 . 特殊符号

**双引号 “” **:主要用于界定字符串,特别是当内容中包含空格时。可识别变量直接调用
**单引号 ‘’ **:用于界定包含特殊字符(如$、“、\等)的字符串。不识别变量
**反引号 `` **:用于命令替换,将命令的输出结果赋值给变量。

[root@localhost ~]# echo $"how are you"
how are you
[root@localhost ~]# vwesion=2.9.9.9
[root@localhost ~]# echo "$pyver $vwesion"
python 2.9.9.9
[root@localhost ~]# echo "$vvi"
11624
[root@localhost ~]# vvi=11624
[root@localhost ~]# echo '$vvi'
$vvi
[root@localhost ~]# which usermod
/usr/sbin/usermod
[root@localhost ~]# ls -lh `which usermod`
-rwxr-x---. 1 root root 112K 11月  6 2016 /usr/sbin/usermod
[root@localhost ~]# date +%T
16:25:21
[root@localhost ~]# time=`date +%T`
[root@localhost ~]# echo $time
16:25:24

5 . 括号

** ** {} 当变量名称容易和紧跟其后的字符混淆时,可以使用大括号“{}”将其括起来,使用符号{}引用变量,括号呢的变量名必须要有赋予值,不赋值查看引用不了
()可以分隔变量值,序列顺序值。确定变量的范围

[root@localhost ~]# which useradd
/usr/sbin/useradd
[root@localhost ~]# rpm -qf $(which useradd)
shadow-utils-4.1.5.1-24.el7.x86_64
[root@localhost ~]# rpm -qc $(rpm -qf $(which useradd))
/etc/default/useradd
/etc/login.defs
[root@localhost ~]# lllllll=123456
[root@localhost ~]# xxxxxxx=xl
[root@localhost ~]# echo ${lllllll}77
12345677
[root@localhost ~]# echo ${lllllll} 7.7.7
123456 7.7.7

三,交互式定义变量

交互式定义变量是指在脚本运行过程中,通过提示用户输入数据并将其赋值给变量。这种方式使脚本能够与用户进行互动,从而动态获取输入数据并在后续的脚本操作中使用。

1 . read

read 命令是 Bash 内置的用于从标准输入(通常是键盘)读取一行数据并赋值给变量的命令。用来提示用户输入信息,从而实现简单的交互过程。执行时将从标准输入设备(键盘)读入 一行内容,并以空格为分隔符,将读入的各字段依次赋值给指定的变量(多余的内容赋值给 最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。

[root@localhost ~]# read yyds
you xi         
[root@localhost ~]# echo $yyds
you xi

2 . read 选项

-p 提示用户的信息
-n 定义字符数
-s 不显示用户输入的内容,常用于输入密码 read -s -p “input your password:” pass
-t 定义超时时间,超过多长时间没输自动退出

[root@localhost ~]# read -p "请输入姓名:" name
请输入姓名:zhangsan
[root@localhost ~]# read -s -p "请输入密码:" passwd
请输入密码:[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo "lisi like cat" > lisi.txt
[root@localhost ~]# read -p "请输入李四的喜欢什么:" like < lisi.txt
[root@localhost ~]# echo $like
lisi like cat

stty -echo 关闭屏幕回显
stty echo 开启屏幕回显

四,变量的范围

默认情况下,新定义的变量只在当前的 Shell 环境中有效,被称为局部变量,当进入子程序或新的子 Shell 环境时,局部变量将无法再使用

1 . export命令

为了使用户定义的变量在所有的子 Shell 环境中能够继续使用,减少重复设置工作,可以通过内部命令 export 将指定的变量导出为全局变量。用户可以同时指定多个变量名称作为参数(无须使用“$”符号),变量名之间以空格分隔

[root@localhost ~]# time=123
[root@localhost ~]# echo $time
123
[root@localhost ~]# bash
[root@localhost ~]# echo $time[root@localhost ~]# time=123
[root@localhost ~]# echo $time
123
[root@localhost ~]# export time
[root@localhost ~]# bash
[root@localhost ~]# echo $time
123
[root@localhost ~]# 

使用 export 导出全局变量的同时,也可以为变量进行赋值,这样在新定义全局变量时就不需要提前进行赋值了
env查看用户当前环境变量
export time=456
再次env就能看到了
export -n 456取消定义的全局变量变成局部变量

[root@localhost ~]# time=123
[root@localhost ~]# echo $time
123
[root@localhost ~]# export time
[root@localhost ~]# bash
[root@localhost ~]# echo $time
123
[root@localhost ~]# export time="456"
[root@localhost ~]# enc
[root@localhost ~]# echo $time
456
[root@localhost ~]# env
XDG_SESSION_ID=126
HOSTNAME=localhost.localdomain
time=456
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.72.1 52813 22
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=4
LOGNAME=root
SSH_CONNECTION=192.168.72.1 52813 192.168.72.20 22
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=localhost:10.0
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

五,数值变量的运算及特殊变量

在 Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算整数值的运算主要通过内部命令 expr 进行运算符与变量之间必须有一个空格。

1 . 可以算加减乘除

[root@localhost ~]# expr 1 + 1
2
[root@localhost ~]# expr 2 \* 2
4
[root@localhost ~]# expr 2 '*' 2
4

2 . 变量运算

[root@localhost ~]# x=34
[root@localhost ~]# y=32
[root@localhost ~]# expr $y +20
expr: 语法错误
[root@localhost ~]# expr $y + 20
52
[root@localhost ~]# expr $y + $y
64
[root@localhost ~]# expr $y - $x
-2
[root@localhost ~]# expr $y \* $x
1088
[root@localhost ~]# expr $y % $x   取余
32
[root@localhost ~]# echo lll5
lll5
[root@localhost ~]# lll5=`expr $x \* $y \* $y`
[root@localhost ~]# echo $lll5
34816
[root@localhost ~]# 

3 . 使用shll脚本运算

[root@localhost ~]# vim first.sh 
#!/bin/bash
#1,定义输出的数字
read -p"请输入第一个数字:" num1
read -p"请输入第一个数字:" num2
#2, 定义执行加算法
expr $num1 + $num2
#
[root@localhost ~]# chmod +x first.sh 
[root@localhost ~]# ./first.sh 
请输入第一个数字:15
请输入第一个数字:25
40

或者是

[root@localhost ~]# vim first.sh
#!/bin/bash
#1,定义输出的数字
read -p "请输入第一个数字:" num1
read -p "请输入第一个数字:" num2
#2, 定义执行加算法
num9=`expr $num1 + $num2`echo "求和数为:" $num9
#
[root@localhost ~]# chmod +x first.sh 
[root@localhost ~]# ./first.sh 
请输入第一个数字:30
请输入第一个数字:17
求和数为: 47

4 . (())

在 Linux 中,双圆括号 (( )) 是用于执行算术运算的一种方式。它提供了一种简洁且高效的方式来进行整数运算,(()) 必须要和echo在一起用因为他只能运算无法输出结果

4.1 基本用法

  1. 算术运算:可以在 (( )) 中进行加、减、乘、除、取余等操作。
  2. 赋值操作:可以在 (( )) 中对变量进行赋值。
  3. 条件测试:可以在 (( )) 中进行条件测试,用于 if 语句或循环。
[root@localhost ~]# echo $((1+1))
2
[root@localhost ~]# echo $((5-2))
3
[root@localhost ~]# a=44
[root@localhost ~]# b=17
[root@localhost ~]# echo $((a-b))
27
[root@localhost ~]# echo $((b-a))
-27

5 . []

整数运算

[root@localhost ~]# echo $[10*10][]里的*不需要转义100
[root@localhost ~]# echo $[10%4]
2
[root@localhost ~]# echo $[10/4]
2
[root@localhost ~]# echo $[10/12]
0

6 . 变量运算

[root@localhost ~]# a=44
[root@localhost ~]# b=17
[root@localhost ~]# c=15
[root@localhost ~]# echo $[10*10]
100
[root@localhost ~]# echo $[10%4]
2
[root@localhost ~]# echo $[10/4]
2
[root@localhost ~]# echo $[10/12]
0
[root@localhost ~]# echo $[$a+$b]
61
[root@localhost ~]# echo $[a+b]
61
[root@localhost ~]# echo $[a+b*c]
299
[root@localhost ~]# echo $[(a+b)*c]
915
[root@localhost ~]# echo $[a%b]
10
[root@localhost ~]# echo $[a/b]
2

六,let命令

let 命令是 Bash 中用于执行算术运算的一个内置命令。它可以对整数进行加减乘除等算术运算,且可以处理多个表达式。

[root@localhost ~]# n=0;let n=n+1;echo $n
1
[root@localhost ~]# let n+=3
[root@localhost ~]# echo $n
4
[root@localhost ~]# let n=n**3
[root@localhost ~]# echo $n
64
[root@localhost ~]# let n++
[root@localhost ~]# echo $n
65
[root@localhost ~]# let n--
[root@localhost ~]# echo $n
64
[root@localhost ~]# echo $[n++]
64
[root@localhost ~]# echo $n
65
[root@localhost ~]# 

常用的运算表达式:
i=KaTeX parse error: Undefined control sequence: \* at position 10: (expr 12 \̲*̲ 5) i=((12 * 5))
i=[12 * 5]
let i=12*5
i++ 相当于 i= [ [ [i+1]
i-- 相当于 i= [ [ [i-1]
i+=2 相当于 i= [ [ [i+2]

七,dc

dc 是一个支持任意精度算术运算的逆波兰计算器。dc 原生支持整数和浮点数,并且可以处理复杂的数学运算。与其他计算器不同,dc 使用后缀表示法(也称为逆波兰表示法),这意味着操作符在操作数之后。

[root@localhost ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
10/3
3
11/3
3
scale=5
10/3
3.33333
11/3
3.66666
12/3
4.00000

或者

[root@localhost ~]# echo "scale=5;11/3|bc"
scale=5;11/3|bc
[root@localhost ~]# echo "scale=5;11/3"|bc
3.66666
[root@localhost ~]# echo "4^2"|bc
16
[root@localhost ~]# echo "5^2"|bc
25
[root@localhost ~]# a=24
[root@localhost ~]# b=7
[root@localhost ~]# echo "$a*$b"|bc
168
[root@localhost ~]# echo "$a/$b"|bc
3
[root@localhost ~]# echo "scale=3;$a/$b"|bc
3.428
[root@localhost ~]# echo "2>2"|bc     0为假
0
[root@localhost ~]# echo "2==2"|bc     1为真
1

八,环境变量

环境变量是操作系统用于存储环境配置的动态命名值。这些变量可以影响系统和应用程序的行为。环境变量可以在系统范围内定义,也可以在用户会话或特定的进程中定义。它们通常用于配置操作系统的运行环境和应用程序的运行参数。

1 . 环境变量的特点

1.1 全局性:环境变量在创建后,可以在创建它们的进程及其子进程中全局访问。
1.2动态性:环境变量的值是动态的,可以在运行时进行修改。
1.3配置和管理:环境变量通常用于配置系统环境、用户环境和应用程序行为。

2 . 常见的环境变量

  • PATH:定义可执行文件的搜索路径。
  • HOME:当前用户的主目录。
  • USER:当前登录的用户名。
  • SHELL:当前用户使用的默认 shell 程序。
  • LANG:系统的语言和区域设置。
  • PWD:当前工作目录。
  • EDITOR:默认文本编辑器。
[root@localhost ~]# echo $RANDOM
8963
[root@localhost ~]# echo $RANDOM
16952
[root@localhost ~]# echo $RANDOM
31165
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# echo $UID
0
[root@localhost ~]# echo $PWD
/root
[root@localhost ~]# echo $PWD
/root
[root@localhost ~]# echo $PWD
/root
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# PATH="$PATH:/root"
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root
[root@localhost /home]# vim test2.sh 
echo "hell 556"
~                
:wq
[root@localhost /home]# chmod +x test2.sh
[root@localhost /home]# ./test2.sh 
hell 556
[root@localhost /home]# cd /opt
[root@localhost /opt]#test2.sh
bash: test2.sh: 未找到命令...
[root@localhost /home]# PATH="$PATH:/home"
[root@localhost /home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root:/home
[root@localhost /home]# test2.sh 
hell 556
[root@localhost /home]# cd /opt
[root@localhost /opt]# test2.sh
hell 556

九,只读变量

Shell 变量中有一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变 量。在创建变量的时候可将其设置为只读属性,也可以将已存在的变量设置为只读属性,只 读变量主要用于变量值不允许被修改的情况,只能退出

[root@localhost ~]# tttt=123
[root@localhost ~]# readonly tttt
[root@localhost ~]# echo $tttt
123
[root@localhost ~]# tttt=456
-bash: tttt: 只读变量
[root@localhost ~]# unset tttt
-bash: unset: tttt: 无法反设定: 只读 variable
[root@localhost ~]# exit

十,位置变量

执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。 位置变量也称为位置参数,用$1、$2、$3、…、$9 表示,命令或脚本本身的名称使用“$0”表示

[root@localhost ~]# vim user.sh
#!/bin/bash
useradd $1
echo $2 | passwd --stdin $1
[root@localhost ~]# bash user.sh sj 123
更改用户 sj 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 
[root@localhost ~]# id sj
uid=1001(sj) gid=1001(sj) 组=1001(sj)
[root@localhost ~]# vim cs.sh
#!/bin/bash
# 使用 expr 命令进行算术运算,并将结果赋给变量
SUM=`expr $1 + $2`# 输出结果
echo "$1 + $2 = $SUM"
[root@localhost ~]# chmod +x cs.sh 
[root@localhost ~]# ./cs.sh 12 35
12 + 35 = 47

十一,预定义变量

预定义变量是由 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而 不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示
$#:表示命令行中位置参数的个数。
$*:表示所有位置参数的内容,这些内容当做一个整体
$@:表示列出所有位置参数,但是是以单个的形式的列出
$?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0 值均表示执行出现异常。
$0:表示当前执行的脚本或程序的名称
$$:表示返回当前进程的进程号
$!:返回最后一个后台进程的进程号

[root@localhost ~]# vim demo01.sh
#!/bin/bash
echo $1  
echo “$0 表示当前执行的脚本或程序的名称”
echo “$# 表示命令行中位置参数的个数”
echo “$* 所有位置参数的内容,这些内容当做一个整体” 
echo “$@ 表示列出所有位置参数,但是是以单个的形式的列出”
~
[root@localhost ~]# chmod +x demo01.sh 
[root@localhost ~]# ./demo01.sh 1 2 3 4 5 6
1
“./demo01.sh 表示当前执行的脚本或程序的名称”
“6 表示命令行中位置参数的个数”
“1 2 3 4 5 6 所有位置参数的内容,这些内容当做一个整体”
“1 2 3 4 5 6 表示列出所有位置参数,但是是以单个的形式的列出”
[root@localhost ~]# vim demo02.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "当前脚本的第一个参数是$1"
echo "当前脚本的第二个参数是$2"
echo "当前脚本一共有$#个参数"
~
[root@localhost ~]# chmod +x demo02.sh 
[root@localhost ~]# ./demo02.sh 1 2 3 4 
当前脚本名称为./demo02.sh
当前脚本的第一个参数是1
当前脚本的第二个参数是2
当前脚本一共有4个参数

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony--文本组件Text属性详解

金樽清酒斗十千&#xff0c;玉盘珍羞直万钱。 停杯投箸不能食&#xff0c;拔剑四顾心茫然。 欲渡黄河冰塞川&#xff0c;将登太行雪满山。 闲来垂钓碧溪上&#xff0c;忽复乘舟梦日边。 行路难&#xff0c;行路难&#xff0c;多歧路&#xff0c;今安在&#xff1f; 长风破浪会有…

浅析stm32启动文件

浅析stm32启动文件 文章目录 浅析stm32启动文件1.什么是启动文件&#xff1f;2.启动文件的命名规则3.stm32芯片的命名规则 1.什么是启动文件&#xff1f; 我们来看gpt给出的答案&#xff1a; STM32的启动文件是一个关键的汇编语言源文件&#xff0c;它负责在微控制器上电或复位…

探索数据结构与算法的奇妙世界 —— Github开源项目推荐《Hello 算法》

在浩瀚的编程与计算机科学领域中&#xff0c;数据结构与算法无疑是每位开发者攀登技术高峰的必经之路。然而&#xff0c;对于初学者而言&#xff0c;这条路往往布满了荆棘与挑战。幸运的是&#xff0c;今天我要向大家推荐一个令人振奋的项目——《Hello Algo》&#xff0c;它正…

在 Vue3 + Electron 中使用预加载脚本(preload)

文章目录 一、什么是预加载脚本(preload)&#xff0c;为什么我们需要它二、通过预加载脚本暴露相关 API 至渲染进程1、实现获取系统默认桌面路径功能2、向剪切板写入内容3、使用系统默认浏览器访问目标 url4、使用文件选择对话框 三、参考资料 一、什么是预加载脚本(preload)&a…

负载测试和功率分析中负载箱的重要作用

在负载测试和功率分析中&#xff0c;负载箱扮演着至关重要的角色。以下是负载箱在这两个方面的重要作用&#xff1a; 一、负载测试中的重要作用 模拟实际负载条件&#xff1a; 负载箱能够模拟各种复杂的负载条件&#xff0c;包括电阻性负载、电感性负载、电容性负载等&#x…

【HarmonyOS开发】弹窗交互(promptAction )

实现效果 点击按钮实现不同方式的弹窗showToast showDialog showActionMenu 代码实现 1.引入’ohos.promptAction’ import promptAction from ohos.promptAction;2.通过promptAction 实现系统既定的弹窗 import promptAction from ohos.promptAction;Entry Component st…

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点&#xff1a; Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合&#xff0c;实现各个层之间的解耦&#xff0c;让我们更专注于业务…

数据库内核研发学习之路(三)创建postgres内置函数

本章之前已经讲明白了我们的postgres如何进行编译安装&#xff0c;这是很重要的一步&#xff0c;接下来就是学会对postgres进行小的改动&#xff0c;然后保证依然能够顺利编译安装运行&#xff01; 本章续讲内容如何创建一个内置函数。 1、内置函数和用户自定义函数的区别 熟…

如何在所有docker命令前加上一个sudo

如果当前登录用户不是root不用&#xff0c;使用docker命令的时候&#xff0c;需要在前面加上一个sudo 提升权限。 但是每次都加&#xff0c;就感觉特别的麻烦&#xff0c;如何简化呢&#xff1f; 解决办法 打开你的shell配置文件&#xff08;例如&#xff0c;如果你使用bash&am…

多媒体软件开发选择Animate软件还是Unity3D软件?

以下内容可能有一些片面&#xff0c;因为多媒体软件开发平台有很多&#xff0c;因为接触Animate和Unity3D比较多&#xff0c;所以这里仅对这两款进行分析&#xff01; Animate软件与Unity3D软件都是经常在多媒体展馆中用来制作互动展示内容的&#xff0c;对于这两种开发平台&a…

Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截

摘要 在当今互联网时代&#xff0c;数据采集已成为获取信息的重要手段。然而&#xff0c;随着反爬虫技术的不断进步&#xff0c;爬虫开发者面临着越来越多的挑战。本文将探讨Java爬虫在抓取TikTok音频时的安全策略&#xff0c;包括如何防止请求被拦截&#xff0c;以及如何提高…

园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境

一、背景需求分析 随着企业园区的快速发展和扩张&#xff0c;道路车辆管理成为了保障园区秩序、提升运营效率及确保员工安全的重要任务。针对这一需求&#xff0c;旭帆科技TSINGSEE青犀提出了一种企业园区道路车辆管控的解决方案&#xff0c;通过整合视频监控、智能识别等技术…

LVS+Nginx高可用集群---搭建高可用集群负载均衡

1.LVS简介 Lvs(Linux Virtual Server)&#xff1a;使用集群&#xff0c;对于整个用户来说是透明&#xff0c;用户访问的时候是单个高性能的整体。道理与nginx类似 LVS网络拓扑图&#xff1a;是基于四层。 用户通过浏览器发送请求&#xff0c;然后到达LVS.Lvs根据相应算法将…

【TensorRT】Yolov5-DeepSORT 目标跟踪

Yolov5-DeepSORT-TensorRT 本项目是 Yolo-DeepSORT 的 C 实现&#xff0c;使用 TensorRT 进行推理 &#x1f680;&#x1f680;&#x1f680; 开源地址&#xff1a;Yolov5_DeepSORT_TensorRT&#xff0c;求 star⭐ ~ 引言 ⚡ 推理速度可达25-30FPS&#xff0c;可以落地部署&…

南京邮电大学统计学课程实验2 用EXCEL进行参数估计假设检验 指导

一、实验描述 实验目的 1、学会用Excel进行参数估计&#xff1b; 2、学会用Excel进行z检验-双样本平均差检验&#xff1b; 实验环境 实验中使用以下软件和硬件设备 &#xff08;1&#xff09;Windows XP操作系统&#xff1b; &#xff08;2&#xff09;PC机、EXCEL软件&…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 卢小姐的生日礼物(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测…

【Vue3】4个比较重要的设计模式!!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 在我投身于前端开发的职业生涯期间,曾有一次承接了一个大型项目的维护工作。此项目运用的是 Vue 框架,然而其代码结构紊乱不堪,可维护性极度糟糕😫。 这使我深刻领会到,理解并运用 Vue 中的重要设计模式是何等关键! …

一个引发openssl崩溃问题案例

1 背景 最近用libevent写了一个https代理功能&#xff0c;在调研的时候&#xff0c;遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…

vue3表格使用拖拽排序

拖拽排序 实现效果实现步骤拖拽排序功能的完整代码 实现效果 实现步骤 先安装sortable.js库使用的vue文件中引入 import Sortablejs from ‘sortablejs’在进入页面后创建sortable实例在提交后端时可获取到排序后的最新table列表数据 sortable.js文档 拖拽排序功能的完整代码 …

mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据

效果&#xff1a; mars3d实现GraphicLayer获取当前相机视角内的可视点位&#xff08;矢量数据 相关依赖api&#xff1a; 1. map.getExtent(); 提取地球当前视域边界,示例&#xff1a;{ xmin: 70, xmax: 140, ymin: 0, ymax: 55, height: 0, } 2.graphicLayer.eachGraphic遍…