当前位置: 首页 > news >正文

网站做防御/网站建设企业

网站做防御,网站建设企业,如何建立电子商务网站,谁做的四虎网站是多少shell脚本编程 声明:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 变量 变量类型 变量类型: 内置变量 : 如 PS1 , PATH ,HISTSIZE 用户自定义变量 不同变量存放数据不同,决定了以下 1.数据存储方式 2.参与的运算 3.表示…

shell脚本编程

声明:首行shebang机制

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

变量 

        变量类型 

        变量类型:

        内置变量 : 如 PS1 , PATH ,HISTSIZE

        用户自定义变量

        不同变量存放数据不同,决定了以下

        1.数据存储方式

        2.参与的运算

        3.表示的数据范围

        变量数据类型:

        1.字符

        2.数值:整型,浮点型,bash不支持浮点数

        变量的定义和引用:

        变量的生效范围等标准划分变量类型

        1.普通变量:生效范围当前shell进程,对当前shell之外的其它shell进程,包括当前shell进程的shell子进程均无效

        2.环境变量:生效范围为当前shell进程及其子进程

        3.本地变量:生效范围为当前shell进程的某代码片段.

        变量赋值

name=‘value’

        value可以是一下多种形式 

value=‘root’

value="$USER"

value=`COMMEND`  ||  value=$(COMMEND)

        范例:

[root@localhost ~]# name="
> love
> wtj
> zyf
> "
[root@localhost ~]# echo $name
love wtj zyf
[root@localhost ~]# echo "$name"

love
wtj
zyf

[root@localhost ~]# 

        注意:变量赋值时临时生效的,当退出终端后,变量会被删除,无法永久保存,脚本中的变量也会随着脚本的结束而结束. 

        变量引用

$name

${name} 

        弱引用:其中的变量会被替换为变量值.

        强引用: 其中的变量不会被替换为变量值,保持原字符串.

        范例:

[root@localhost ~]# love=wtj
[root@localhost ~]# lover='$love'
[root@localhost ~]# liker="$love"
[root@localhost ~]# echo $lover
$love
[root@localhost ~]# echo $liker
wtj 

        显示已定义的所有变量

set 

        范例:

[root@localhost ~]# set
ABRT_DEBUG_LOG=/dev/null
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
 

        删除变量

unset  name 

        示例:

[root@localhost ~]# echo $name
love wtj zyf
[root@localhost ~]# unset name
[root@localhost ~]# echo $name

[root@localhost ~]# 

        环境变量 

        环境变量可以使子进程继承父进程的变量,但是父进程无法继承子进程,同时一旦子进程修改变量,则子进程会将新定义的变量赋值给孙子进程.

        变量声明和赋值

export name=lover

declare -x name=lover

OR

name=lover

export name

        变量引用

$name

${name} 

        显示所有环境变量

env

printenv

export

declare -x

        删除变量

unset name 

        bash内创建的环境变量

PATH 

SHELL

USER

UID

HOME

PWD

SHLVL

_        表示前一个命令的最后一个参数

        只读变量 

        只读变量:只能声明定义,但后续不能修改删除

        声明只读变量:

readonly name

declcare -r name

        查看只读变量

readonly [ -p ]

declare -r 

        位置变量 

        位置变量:在bash shell中的内置变量,在脚本代码中调用通过命令行传递给脚本的参数

$1,$2.... 对应第1个,第2个等参数,shift [n] 换位置

$0 命令本身,包括路径

$* 传递给脚本的所有参数,全部参数合为一个字符串

$@ 传递给脚本的所有参数,每个参数为独立字符串

$# 传递给脚本的参数的个数

注意:$a $* 只在被双引号包起来的时候才会有差异 

        清空所所有位置变量

set -- 

        退出状态码变量 

$?的值为0        代表成功

$?的值为1-255 代表失败

        范例:

[root@localhost ~]# ls
anaconda-ks.cfg  original-ks.cfg
[root@localhost ~]# echo $?
0
[root@localhost ~]# aa
bash: aa: command not found...
[root@localhost ~]# echo $?
127 

        用户可以在脚本中使用以下命令自定义退出状态码

exit [ n ] 

        注意:

        1.脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态码取决于exit命令后面的数字

        2.如果为给脚本指定退出状态码,整个脚本退出状态码取决于脚本中执行的最后一条命令状态 

        展开命令执行

        展开命令执行顺序

把命令分成单个单词

展开别名

展开大括号的声明{ }

展开波浪符声明~

命令替换$()和``

把命令行分成命令词

展开文件通配*,?, [abc]等

准备I/O重定向 < , >

运行命令

         防止扩展

反斜线(\)会使后面的字符按照原意进行解释

        范例:

[root@localhost ~]# echo \$name
$name 

        加引号来防止扩展

单引号可以防止所有扩展

双引号也可以防止扩展,但是以下情况例外:$USER 

        变量扩展

`` :  命令替换

\  :  禁止单个字符扩展 

!:历史命令替换

        脚本安全和set 

        $-

[root@localhost ~]# echo $-
himBH

h: hashall - 启用哈希表功能,使得命令查找更快。
i: interactive - 表示这是一个交互式 shell。
m: monitor - 启用作业控制。
B: braceexpand - 启用大括号扩展。
H: histexpand - 启用历史扩展(例如 ! 符号的使用)。

        set

set命令是Linux系统中常用的一个命令,主要用于设置或显示shell环境变量以及控制shell的行为。以下是对set命令的详细解释:

一、基本用法

  1. 显示环境变量
    • 不带任何参数运行set命令时,它会显示当前shell会话中的所有环境变量及其值。这对于调试和查看当前设置的环境变量非常有用。
  2. 设置环境变量
    • 可以通过set 变量名=值的形式来设置环境变量。但需要注意的是,通过这种方式设置的环境变量只在当前shell会话中有效,并不会影响到其他shell会话或子shell。
    • 如果想要让环境变量在所有shell会话中持久生效,需要将set命令(实际上是export命令,因为set命令本身不用于持久化环境变量)写入用户的配置文件中,如~/.bashrc~/.bash_profile

二、常用选项

set命令还提供了多个选项,用于控制shell的行为:

  • -a:将当前环境中定义的变量导出为环境变量。
  • -b:启用或禁用脚本的历史记录功能(在某些shell版本中可能不适用)。
  • -C:启用或禁用shell调用命令时的大小写敏感(在某些shell版本中可能不适用)。
  • -e:如果命令执行出错,则立即退出shell。这对于脚本的错误处理非常有用。
  • -f:禁用文件名扩展(即通配符扩展)。
  • -h:显示set命令的帮助信息(在某些shell版本中可能不适用,通常使用man sethelp set查看帮助)。
  • -i:将shell设置为交互模式,通常用于登录shell。
  • -n:将shell设置为非交互模式,通常用于执行脚本。在这种模式下,读取命令但不执行它们(仅用于语法检查)。
  • -o:显示当前shell的选项设置。
  • -p:显示当前环境中定义的所有变量。
  • -u:如果使用未定义的变量,则显示错误信息并退出shell。这有助于避免由于错误的环境变量导致的问题。
  • -v:显示每次执行的命令及其参数(但通常用于显示输入值,而不是命令本身)。
  • -x:在执行命令之前,打印出该命令及其参数。这对于调试脚本非常有用。

三、注意事项

  • set命令本身并不用于定义新的shell变量(尽管它可以用来设置环境变量的值)。定义新的shell变量通常使用declarelocal(在函数内部)命令。
  • set命令设置的环境变量只在当前shell会话中有效,除非使用export命令将其导出为环境变量,或者将其写入用户的配置文件中以持久化。
  • set命令的某些选项和行为可能因不同的shell(如Bash、Zsh等)而有所不同。因此,在使用时最好参考特定shell的文档。

        示例:

[root@localhost ~]# set -o
allexport          off
braceexpand        on
emacs              on
errexit            off
errtrace           off
functrace          off
hashall            on
histexpand         on
history            on
ignoreeof          off
interactive-comments    on
keyword            off
monitor            on
noclobber          off
noexec             off
noglob             off
nolog              off
notify             off
nounset            off
onecmd             off
physical           off
pipefail           off
posix              off
privileged         off
verbose            off
vi                 off
xtrace             off 

printf

Linux中的printf命令是一个功能强大的格式化输出命令,它模仿了C语言中的printf()函数,用于将指定的字符串、变量、表达式等按照一定的格式输出到终端或文件中。以下是printf命令的详细解析:

基本语法

printf命令的基本语法为:

printf format-string [arguments...]
  • format-string:格式化字符串,使用引号括起来,可以包含普通字符和格式控制符。格式控制符以百分号(%)开头,后面跟一个或多个控制字符,用于指定输出的格式。
  • arguments:可选参数,用于填充格式字符串中的格式控制符。参数的个数和类型应与格式控制符相匹配。

格式控制符

  • printf命令支持多种格式控制符,用于控制不同类型数据的输出格式。以下是一些常见的格式控制符:

  • %d%i:按照有符号十进制整数格式打印参数。
  • %u:按照无符号十进制整数格式打印参数。
  • %o:按照八进制格式打印参数。
  • %x%X:按照十六进制格式打印参数,分别表示小写和大写字母。
  • %f%F:按照浮点数格式打印参数。
  • %e%E:按照科学计数法格式打印参数,分别表示小写和大写字母。
  • %g%G:根据数值大小自动选择%f%e的格式。
  • %c:按照字符格式打印参数。
  • %s:按照字符串格式打印参数。
  • %p:以指针的格式输出参数,通常用来输出内存地址。

特殊转义字符

  • 除了基本的格式控制符外,printf还支持一些特殊的转义字符,用于控制输出的格式,如:

  • \n:换行符。
  • \t:制表符。
  • \\:反斜杠。
  • \r:回车。
  • \b:退格。
  • \a:响铃。
  • \f:换页。
  • \v:垂直制表符。

常用选项和参数

  • printf命令还提供了一些选项和参数,用于控制输出的宽度、对齐方式等,如:

  • %nd:指定输出的最小宽度为n,如果实际输出的宽度小于n,则左侧填充空格(右对齐)。
  • %-nd:指定输出的最小宽度为n,如果实际输出的宽度小于n,则右侧填充空格(左对齐)。
  • %0nd:指定输出的最小宽度为n,如果实际输出的宽度小于n,则左侧填充零。
  • %.nf:指定输出的浮点数精度为n,即小数点后保留n位数字。

        示例:

[root@localhost ~]# printf "%X\n" 16
10
[root@localhost ~]# 
[root@localhost ~]# printf "%s %s\n" 1 2 3 4 
1 2
3 4
[root@localhost ~]# printf '('')
> ^C
[root@localhost ~]# printf "(%s)\n" 1 2 3 4
(1)
(2)
(3)
(4)  

相关文章:

Linux基础入门 --12 DAY(SHELL脚本编程基础)

shell脚本编程 声明&#xff1a;首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 变量 变量类型 变量类型&#xff1a; 内置变量 : 如 PS1 , PATH ,HISTSIZE 用户自定义变量 不同变量存放数据不同&#xff0c;决定了以下 1.数据存储方式 2.参与的运算 3.表示…...

关于frp Web界面-----frp Server Dashboard 和 frp Client Admin UI

Web 界面 官方文档&#xff1a;https://gofrp.org/zh-cn/docs/features/common/ui/ 目前 frpc 和 frps 分别内置了相应的 Web 界面方便用户使用。 客户端 Admin UI 服务端 Dashboard 服务端 Dashboard 服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信…...

Hive数仓操作(一)

Hive 介绍 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;旨在简化大规模数据集的管理和分析。它将结构化数据文件映射为表&#xff0c;并提供类似 SQL 的查询功能。Hive 的数据存储在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中&#xff0c;使用 Hive 查询语…...

什么是NAND Flash?

什么是NAND Flash? NAND闪存是一种非易失性存储器技术&#xff0c;它彻底改变了数字时代的数据存储。它是闪存的一种形式&#xff0c;这意味着它可以被电擦除和重新编程。NAND闪存以NAND&#xff08;NOT-AND&#xff09;逻辑门命名&#xff0c;该逻辑门用于其基本架构。术语“…...

Spring Boot 整合 Keycloak

1、概览 本文将带你了解如何设置 Keycloak 服务器&#xff0c;以及如何使用 Spring Security OAuth2.0 将 Spring Boot 应用连接到 Keycloak 服务器。 2、Keycloak 是什么&#xff1f; Keycloak 是针对现代应用和服务的开源身份和访问管理解决方案。 Keycloak 提供了诸如单…...

工程师 - Windows下使用WSL来访问本地的Linux文件系统

Access Linux filesystems in Windows and WSL 2 从 Windows Insiders 预览版构建 20211 开始&#xff0c;WSL 2 将提供一项新功能&#xff1a;wsl --mount。这一新参数允许在 WSL 2 中连接并挂载物理磁盘&#xff0c;从而使您能够访问 Windows 本身不支持的文件系统&#xff0…...

SQL高可用优化-优化SQL中distinct和Where条件对索引字段进行非空检查语句

最近做一个需求&#xff0c;关于SQL高可用优化&#xff0c;需要优化项目中的SQL&#xff0c;提升查询效率。 SQL高可用优化 一、优化SQL包含distinct场景二、优化SQL中Where条件中索引字段是否为NULL三、代码验证1. NodeMapper2. NodeService3. NodeController4.数据库数据5.项…...

openharmony源码编译

1. win拷贝数据到虚拟机Ubuntu配置 1.打开终端&#xff0c;更新软件库 sudo apt-get update 2.下载安装open-vm-tools&#xff0c;open-vm-tools-desktop sudo apt-get install open-vm-tools open-vm-tools-desktop 3.重启 sudo reboot 2.编译环境配置 1.设置环境脚本…...

H.264编解码工具 - NVIDIA CUDA

一、简介 NVIDIA CUDA编解码是一项采用NVIDIA图形处理器(GPU)来加速视频编码和解码的技术。CUDA(Compute Unified Device Architecture)是一种并行计算平台和编程模型,允许开发者使用GPU来进行通用计算。 优点: 加速编解码速度:CUDA编解码利用GPU的并行处理能力,可以…...

数学建模小练习

题目B 电影《虎胆龙威 3》中&#xff0c;塞谬尔和布鲁斯扮演的主角要拆除西蒙所放的炸弹。西蒙喷泉上面有两个壶&#xff0c;容量分别是5加仑和3加仑&#xff0c;向其中一个壶中加入刚好 4 加仑的水&#xff0c;计时器会停止&#xff0c;否则5分钟后会爆炸。 问题:能够安全拆弹…...

Java爬虫:获取SKU详细信息的艺术

在电子商务的世界里&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;是每个商品的唯一标识符&#xff0c;它包含了商品的详细信息&#xff0c;如尺寸、颜色、价格等。对于商家和开发者来说&#xff0c;获取商品的SKU详细信息对于库存管理、订单…...

心理咨询展示网站建设渠道拓展

心理问题长期以来都受到关注&#xff0c;每个城市里也都有相关服务商家&#xff0c;除了进店外&#xff0c;线上也可以开展咨询服务&#xff0c;对需求者来说需要找到靠谱的品牌&#xff0c;而商家也需要触达到更多客户获取转化。 网站是品牌线上工具&#xff0c;利于商家通过…...

naocs注册中心,配置管理,openfeign在idea中实现模块间的调用,getway的使用

一 naocs注册中心步骤 1 nacos下载安装 解压安装包&#xff0c;直接运行bin目录下的startup.cmd 这里双击运行出现问题的情况下 &#xff08;版本低的naocs&#xff09; 在bin目录下 打开cmd 运行以下命令 startup.cmd -m standalone 访问地址&#xff1a; http://localh…...

先进封装技术 Part02---TSV科普

一、引言 随着电子设备向更小型化、更高性能的方向发展,传统的芯片互连技术已经无法满足日益增长的需求。在这样的背景下,TSV(Through-Silicon Via,硅通孔)技术应运而生,成为先进封装技术中的核心之一。 如果我们看大多数主板,可以看到两件事:第一,芯片之间的大多数连…...

【数据挖掘】2023年 Quiz 1-3 整理 带答案

目录 Quiz 1Quiz 2Quiz 3Quiz 1 Problem 1(30%). Consider the training data shown below. Here, A , B A, B A,B, and...

老古董Lisp实用主义入门教程(12):白日梦先生的白日梦

白日梦先生的白日梦 白日梦先生已经跟着大家一起学Lisp长达两个月零五天&#xff01; 001 粗鲁先生Lisp再出发002 懒惰先生的Lisp开发流程003 颠倒先生的数学表达式004 完美先生的完美Lisp005 好奇先生用Lisp来探索Lisp006 好奇先生在Lisp的花园里挖呀挖呀挖007 挑剔先生给出…...

UE5 Windows热更新解决方案思路(HotPatcher+Tomcat+RuntimeFilesDownloader)

以下个人学习笔记。其中必会存在一些问题&#xff0c;仅作参考。本人版本5.1。 参考视频&#xff1a; UE4热更新&#xff1a;HotPatcher插件使用教程_哔哩哔哩_bilibili 3.检查需要下载的版本_哔哩哔哩_bilibili 参考文章&#xff1a; UE 热更新&#xff1a;Questions &…...

进程管理工具:非daemon进程管理工具supervisor

一、非daemon进程管理工具&#xff1a;supervisor Windows安装supervisor https://pypi.org/project/supervisor-win/4.5.0/#files 一&#xff09;进程管理supervisor简介 supervisor是一个 Client/Server模式的系统&#xff0c;允许用户在类unix操作系统上监视和控制多个进程&…...

c++模拟真人鼠标轨迹算法

一.鼠标轨迹算法简介 鼠标轨迹底层实现采用 C / C语言&#xff0c;利用其高性能和系统级访问能力&#xff0c;开发出高效的鼠标轨迹模拟算法。通过将算法封装为 DLL&#xff08;动态链接库&#xff09;&#xff0c;可以方便地在不同的编程环境中调用&#xff0c;实现跨语言的兼…...

android12/13/14版本wms最新面试题:dumpsys window和sf一定会一致么?

背景&#xff1a; 近期学员们学习了马哥wms课程后&#xff0c;去参加相关的大厂的framework面试&#xff0c;有一个学员朋友带回来了一个wms相关的面试题&#xff0c;具体面试题描述如下&#xff1a; 问题1 请问wms的window和SurfaceFlinger的Layer有什么关系&#xff1f; 回…...

Python脚本示例,你可以使用这个脚本来自动化登录网站、选择页面元素和提交表单

devtools 元素页面可以选择元素&#xff0c;copy xpath用于查找 python编程&#xff1a;1、浏览器登录https://58.xxx/ 账号:xxx 密码:FN123456 2、选择“技能训练” 3、选择“云网智能运维员培训相关资料” 4、选择“L1-Linux操作系统与运维题库” 5、依次选择1-50题目&#x…...

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…...

从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之三:在目标服务器上恢复数据

从 Oracle 集群到单节点环境&#xff08;详细记录一次数据迁移过程&#xff09;之三&#xff1a;在目标服务器上恢复数据 目录 从 Oracle 集群到单节点环境&#xff08;详细记录一次数据迁移过程&#xff09;之三&#xff1a;在目标服务器上恢复数据一、修改参数文件的内容二、…...

相互作用感知的 3D 分子生成 VAE 模型 - DeepICL 评测

DeepICL 是一个基于相互作用感知的 3D 分子生成模型&#xff0c;能够在目标结合口袋内进行相互作用引导的小分子设计。DeepICL 通过利用蛋白质-配体相互作用的普遍模式作为先验知识&#xff0c;在有限的实验数据下也能实现高度的泛化能力。 一、背景介绍 DeepICL 来源于韩国科学…...

Java实现随机抽奖的方法有哪些

在Java中实现随机抽奖的方法&#xff0c;通常我们会使用java.util.Random类来生成随机数&#xff0c;然后基于这些随机数来选择中奖者。以下将给出几种常见的随机抽奖实现方式&#xff0c;包括从数组中抽取、从列表中抽取以及基于权重的抽奖方式。 1. 从数组中抽取 import ja…...

grafana加载缓慢解决方案

背景 目前随着数据和图表的逐渐增多&#xff0c;Grafana 页面加载速度明显变慢&#xff0c;严重影响了用户体验&#xff0c;几次都有骂娘的冲动.&#xff0c;因此我们需要对 Grafana 进行优化&#xff0c;以提升加载性能。 对于速度优化&#xff0c;我们可以从以下方面进行入…...

【湖南步联科技身份证】 身份证读取与酒店收银系统源码整合———未来之窗行业应用跨平台架构

一、html5 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><script type"text/javascript" src"http://51.onelink.ynwlzc.net/o2o/tpl/Merchant/static/js…...

多路复用和事件轮询机制

多路复用&#xff1a;Nio 服务端只有一个线程处理多个连接 事件轮询机制&#xff1a;select 底层用了 epoll。 select open 调用了 epoll 通过3个方法来实现事件轮询 1.epoll.create 创建epoll 多个集合 2.epoll.ctl 如果有事件会把事件挪到就绪事件列表。 3.epoll.wait 会监听…...

Android常用C++特性之std::abs

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::abs 是 C 标准库中的一个函数&#xff0c;用于计算整数、浮点数或其他数值类型的绝对值。它返回一个值&#xff0c;该值是参数的非负数形式&#xff0c;即去掉负…...

LabVIEW提高开发效率技巧----使用状态机架构

状态机架构&#xff08;State Machine Architecture&#xff09;是LabVIEW编程中的一种常见且高效的设计模式&#xff0c;特别适合用于处理具有多个操作状态的复杂系统。通过这种架构&#xff0c;程序能够根据不同的输入条件或事件&#xff0c;在多个状态之间切换&#xff0c;从…...