sh脚本添加-e参数后报错read: Illegal option -e

Shell编程入门基础 Shell简介 shell 是一个命令解释器.是介于操作系统 kernel 与用户之间的一个绝缘层.准确地说,它也是一种强力的计算机语言.一个 shell 程序,被称为一个脚本,是一种很容易使用的工具,它可以通过将系统调用,公共程序,工具,和编译过的二进制程序粘合在一起来建立应用.事实上,所有的 UNIX 命令和工具再加上公共程序,对于 shell 脚本来说,都是可调用的.如果这些你还觉得不够,那... 阅读详情

read: 默认接受键盘的输入,回车符代表输入结束
在这里插入图片描述

使用 sh test.sh执行后无法对已经输入的参数进行任何操作
在这里插入图片描述

为了防止在使用read命令时因为错误输入无法删除导致回滚,通常都会使用 read -ep参数组合开放功能键

在这里插入图片描述

添加-e参数后再去sh执行test脚本时报错如下:
img

解决方法:
通过 bash test.sh 或者 ./test.sh执行脚本

img

POSIX Shell脚本跨平台兼容:Linux与macOS通用避坑指南 在Linux与macOS之间迁移Shell脚本时,经常遇到命令报错或行为不一致的问题,根源往往在于两套系统工具链对POSIX标准之外扩展功能的实现差异。POSIX作为可移植操作系统接口,定义了Shell语法、命令行工具和系统调用的最小公共集合,是跨平台脚本兼容性的基石。理解这一标准,有助于开发者识别并避开sed、date、echo等命令在GNU与BSD实现中的典型差异,写出真正可移植的自动化脚本。通过环境检查、使用POSIX子集、借助ShellCheck静态检查以及CI多平台矩阵测试,可以有效提升脚本在Li 阅读详情

相关推荐

Python入门实战:从环境配置到自动化文件整理脚本

Python是一种面向实际问题解决的通用编程语言,其核心价值在于将语法知识快速转化为生产力工具。理解解释器、pip包管理、虚拟环境和pathlib路径操作等基础原理,是构建稳定开发环境的技术前提;掌握文件系统遍历、条件分类与shutil移动等能力,则直接支撑日常办公自动化。这种‘任务驱动+即时反馈’的学习路径,显著区别于传统语法灌输,特别适合财务、运营、教师等非专业开发者快速上手。本文聚焦真实场景中的首个可运行脚本——下载文件夹智能归类器,覆盖Windows/macOS/Linux全平台配置、双击执行封装及

weixin_30482181的博客 449

/bin/sh -e

-e含义 每条指令之后,都可以用$?去判断它的返回值,零就是正确执行,非零就是执行有误,加了-e之后,就不用自己写代码去判断返回值,返回非零,脚本就会自动退出。 ...

AntHub的博客 891

OpenCodeUI:基于Docker的本地AI编程工作流中枢

AI编程工具正从云端SaaS向本地化、可审计、离线可用的方向演进。其核心原理在于解耦前端交互、API网关与模型执行三层架构,通过标准化OpenAI兼容接口实现模型无关性;技术价值体现在部署极简(单条docker run)、环境无侵入、网络零依赖,显著降低AI编码在内网、边缘、客户现场等受限场景的落地门槛;典型应用场景包括无公网环境下的紧急修复、遗留系统调试、安全合规开发及多角色模型协同;本文聚焦于以Docker为枢纽、以本地大模型为执行单元的轻量级AI编程中枢——OpenCodeUI。

476

shell使用手册

2)set +e :取消异常退出,不起作用可能脚本本身错误。(注意:我建议去掉.sh扩展名,这样使用起来更像系统命令)\ 也可用作续行符,用于将一行的命令拆分为多行编写。续行符的后面必须直接跟回车符,不能有其它符号;1. 抽象--通用化脚本;2. 参数化--降低硬代码;11 crontab使用。1)需要严格串行执行的。增加定时用的环境变量。

盛源的博客 1016

Claude Code与CC Switch工作流:从安装踩坑到MCP协议实战

AI编程代理(Agent)正从代码补全工具演进为可编排、可审计的智能运行时,其核心依赖MCP协议(Model Context Protocol)实现状态感知与多步工具调用。理解CLI本质是MCP终端客户端、CC Switch实为跨平台配置总线而非启动器,是构建稳定AI编码流水线的前提。该架构支撑真实工程价值:自动分析代码、调用git/pytest/shell等本地工具、生成单元测试与OpenAPI文档,并通过Provider抽象统一管理Anthropic、AWS Bedrock、NVIDIA NIM等后端模

weixin_30247781的博客 486

SPECFEM3D Ubuntu安装全流程:从环境校验到GPU验证

SPECFEM3D 是面向地震波三维数值模拟的高性能科学计算软件,其本质是基于弹性波方程的大规模并行有限元求解器。它依赖 Fortran/C 混合编译、MPI 并行通信、SCOTCH 图划分与 HDF5 高效 I/O 等底层技术栈,对操作系统、编译器链、数学库和硬件架构具有强耦合性。因此,安装过程远非常规软件部署,而是涉及系统级适配的科研基础设施工程。技术价值体现在支撑高精度地球物理建模、大规模地震动仿真及 GPU 加速计算;典型应用场景包括区域尺度地震波传播模拟、震源反演预处理、HPC 集群生产环境部署等

weixin_34161083的博客 394

bash -e 用法简述

bash -e 用法简述

choumin的专栏 2599

DeepSeek-TUI:终端原生AI编程工具的原理与实战

终端AI工具正从GUI渲染层回归Unix哲学本质——以命令行为中心、进程级上下文、原生执行环境。DeepSeek-TUI并非简单封装大模型,而是通过双通道异步流控解决输入阻塞,Shell Context Snapshot实现环境/历史/工作区三级上下文感知,并依托native PTY达成零失真命令执行。其技术价值在于将AI能力无缝嵌入开发者每日高频使用的bash/zsh生命周期,支撑错误诊断、Git提交生成、Shell脚本编写等真实场景。关键词:DeepSeek-TUI、终端AI、TUI架构、Shell上下

蓝色妖姬 391

shell脚本问题read: Illegal option -t

执行shell脚本read.sh出现的问题 #!/bin/bash read -t 20 -s -p "输入密码:" p1 echo read -t 20 -s -p "再次输入密码:" p2 printf "\n" if [ $p1 == $p2 ] then echo "ok" else echo "false" fi unbuntu上运行对于 -s参数 bash read.sh...

zuixiaoyao_001的博客 2526

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 791

从零到一:手把手教你用DJI E-Port套件为M350 RTK开发第三方负载(PSDK V3实战)

本文详细介绍了如何使用DJI E-Port套件为M350 RTK开发第三方负载,涵盖硬件配置、开发环境搭建及实战应用。通过PSDK V3开发套件,开发者可以高效实现负载与无人机的通信,适用于电力巡检等工业场景,提升开发效率与系统稳定性。

weixin_26841743的博客 701

Shell脚本防‘自爆‘指南:从高频踩坑到防爆检查单

脚本自动化是提升运维效率的利器,但Shell脚本中一个未加引号的变量、一次未校验的参数,都可能让自动化流程演变为生产事故。从命令执行偏差到环境差异,常见的风险点集中在文件批量重命名、SFTP远程传输、shift参数解析等高频操作中。理解Shell脚本的失控源头,掌握set -euo pipefail、shellcheck、flock锁、dry-run等防护手段,是构建可靠自动化的关键。本文从实际踩坑场景出发,给出了一套可落地的防爆炸检查单,帮助开发者在定时任务、批量操作等场景中规避风险,让脚本从'能跑'进阶

weixin_34337381的博客 485

半桥LLC谐振变换器及同步整流MATLAB仿真(二)

接上文,半桥LLC谐振变换器及同步整流MATLAB仿真

qq_55203246的博客 4328

realpath命令详解:Shell脚本路径标准化与符号链接解析

在Linux Shell编程中,路径处理是自动化脚本稳定性的核心基础。realpath命令通过标准化绝对路径、解析符号链接、控制文件系统边界等机制,解决了相对路径歧义、软链接语义失控、跨环境路径漂移等底层问题。其原理基于POSIX路径解析规则与内核open()系统调用逻辑,技术价值在于构建可预测、可验证、可复现的路径信任链,显著提升CI/CD流水线、容器化部署及嵌入式脚本的鲁棒性。典型应用场景包括安全路径初始化、路径白名单校验、符号链接感知操作及跨平台兼容适配。本文深入剖析realpath与pwd -P、r

weixin_33985679的博客 365

山东大学软件测试实验2——系统功能测试

​ 给出一个被测试的 Web 应用系统(SUT)。http://211.87.232.162:8080/注:友情链接不用延伸测试。针对被测试的 Web 应用系统进行功能测试,发现其存在的缺陷。 ​

m0_74033391的博客 2408

Xilinx ISE系列教程(2):LED点灯工程、仿真、bit下载和mcs固化

bit流生成配置选项很多,支持生成bit/bin/ascii格式的bin文件,是否压缩,配置速度,配置管脚的上下拉,用户ID,数据加载速度,SPI总线宽度,是否支持Readback,程序加密等等。,在之后的文章,我们会以Xilinx Spartan-6系列FPGA XC6SLX16为例,不涉及FPGA开发知识,仅仅是工具的使用,介绍Xilinx ISE开发环境的使用教程和使用技巧。bit文件下载之后,可以看到LED按照我们设计的1s周期闪烁起来了,但是此时如果断电,重新上电程序就丢失了。...

whik1194的博客 2277

Python自动化脚本生产级落地:可维护、可追溯、可交接

Python自动化不是简单的代码编写,而是涵盖触发、执行、监控到治理的全生命周期工程实践。其核心在于解决真实业务中脚本‘写得快、不敢动、难交接’的顽疾,关键技术支撑包括结构化日志(structlog)、安全路径处理(pathlib)、时区感知时间(pendulum)、分级异常响应与最小权限沙箱运行。这些方案直击中小企业在电商对账、日志巡检、报表生成等27类高频场景中的稳定性、可观测性与安全合规痛点,让自动化真正从开发台走向7×24小时稳态运行。

weixin_30321449的博客 356

apple游客下单逆向分析

Apple游客下单Cookies注册激活流程逆向分析与算法实现

吴秋霖的博客 1998

fast.ai Chapter 1 Linux环境部署避坑指南:Ubuntu 22.04+CUDA 12.1实战配置

深度学习框架依赖的不仅是Python包,更是底层操作系统对GPU、内存、文件系统和ABI的精确支撑。Linux作为主流AI训练平台,其发行版选择、内核参数、用户权限与CUDA驱动版本共同构成模型稳定运行的‘环境基线’。本文聚焦fast.ai Chapter 1这一典型入门场景,解析glibc兼容性、vm.swappiness调优、NVIDIA设备节点权限、conda与pip的CUDA链接差异等关键技术原理,揭示92%新手卡点实为Linux系统级配置偏差所致。适用于Ubuntu 22.04、WSL2及多GPU

weixin_34293141的博客 482

YOLOv11 改进 - 特征融合 | 小目标检测救星:DySample动态上采样减少特征丢失

本文介绍了超轻量且高效的动态上采样器DySample与YOLOv11的结合,以解决传统上采样器工作负载大、应用场景受限的问题。DySample从点采样角度构建上采样,绕过动态卷积,使用PyTorch标准内置函数实现,无需定制CUDA包,能大幅减少参数、FLOPs等资源消耗。我们将DySample代码集成进YOLOv11。实验脚本显示,结合DySample的YOLOv11在多个密集预测任务中或表现出色。

魔改工程师的博客 1411

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5789

【轻松领养】Microduck-零基础部署调试实战:从拆封到跑通机器人控制软件

本文详述将 Radxa ZERO 3W(RK3566,2GB LPDDR4)从零部署为 Microduck 机器人主控的全流程:涵盖选镜像、烧录 microSD(推荐使用 Radxa OS + balenaEtcher 避免分区丢失)、首次上电、SSH 免密登录、板级 bring-up 及 Rust 守护进程 robotd 部署。重点解决电源不足、Windows 烧录工具破坏分区、设备树缺失等常见坑点,提供可复现的命令与诊断方法,附常见问题速查表与调试指南,适用于嵌入式开发与边缘计算项目。

qq_41584795的博客 523

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++ (week4):Linux基础:命令行

Linux简介、vim、Linux命令行、编译工具链

Edward2022的博客 1722

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大模型本地部署排障指南:CUDA错配、GGUF加载失败与显存碎片化诊断

大模型本地运行本质上是神经网络在硬件上的加载、编译、调度与执行闭环,其稳定性高度依赖存储层(模型文件完整性与权限)、计算层(GPU/CPU驱动与显存管理)和调度层(端口、进程与服务配置)的精准对齐。CUDA版本错配会导致libcudart加载失败,GGUF格式若遇magic number校验异常或K-quants指令集不兼容,将引发静默退出;而显存碎片化常被nvidia-smi误判为‘空闲’,实则因PyTorch与vLLM双重预分配导致OOM。这些底层机制直接影响Ollama、llama.cpp及trans

weixin_34126557的博客 322

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

slowfast自制ava动物数据集进行训练

根据ava格式,自制动物数据集在slowfast上进行训练

strewberry4的博客 4968

软件交付中的高频技术陷阱:从现象描述到自动化解法

在分布式系统与云原生交付实践中,‘技术陷阱’并非偶然故障,而是由认知断层、环境差异和流程盲区共同导致的可复现问题模式。其本质是现象描述失焦、实例不可验证、解法不可沉淀——例如时间同步漂移引发gRPC超时、数据库连接池泄漏导致OOM、Alpine镜像因musl/glibc兼容性触发undefined symbol错误。这些问题虽表现各异,但共性在于:缺乏标准化描述框架、缺少最小可复现实例、解法无法嵌入CI/CD流水线。真正有效的应对不是经验式重启或临时补丁,而是将根因转化为可编码、可审计、可度量的工程动作,如

weixin_34129696的博客 413
下一篇: Python+selenium+unittest框架实现网易邮箱的自动登录
打一年工搬一年砖
博客等级 码龄7年 388粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打一年工搬一年砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值