shell错误修改

news/2024/10/17 14:57:11/

错误处理
检查ffmpeg和ffprobe命令是否已安装

if ! command -v ffmpeg &> /dev/null || ! command -v ffprobe &> /dev/null
thenecho "ffmpeg或ffprobe未安装,请先安装它们。"exit
fi
command -v xxxx
command 是一个内置命令,用于检查命令是否存在。
-v 参数表示要显示命令的路径。如果命令存在,返回其路径;如果不存在,会返回一个错误。&> /dev/null
&> 将输出和错误都重定向到 /dev/null,即丢弃。
如果命令相关的输出不会显示,保持整洁。

Declare and assign separately to avoid masking return values.

“掩盖返回值”的警告通常指的是在声明和赋值中,以某种方式声明变量,导致无意中覆盖或干扰命令替换或其他表达式的返回值。
为了避免在脚本中掩盖返回值,尤其是处理像 ffprobe 这样的命令时,最好将变量的声明与赋值分开。local video_base
local output_dir
local duration
local segment_durationvideo_base="${video_name%.*}"
output_dir="$video_dir/$video_base"

分开声明和赋值:先声明变量,然后赋值,以防止掩盖。
一致的局部作用域:对每个变量使用 local,确保它们不会与任何全局变量冲突。

read without -r will mangle backslashes.
在Shell脚本中,使用 read 命令读取输入时,如果不带 -r 选项,反斜杠(\)会被特别处理,可能导致输入数据的“损坏”或意外修改。

read -r -p "所有视频片段已创建于 $output_dir. 是否删除原文件 $video_path? (y/n): " confirm_delete

Prefer mapfile or read -a to split command output (or quote to avoid
splitting).

调用 get_files 函数的结果存储到 video_paths 数组中,如果文件路径中包含空格,使用 read -a 会更加安全。使用($(...)) 可能会因为空格导致路径分割成多个数组元素
video_paths=($(get_files "$directory" "${extensions[@]}"))
转为
output=$(get_files "$directory" "${extensions[@]}")
read -r -a video_paths <<< "$output"

http://www.ppmy.cn/news/1539730.html

相关文章

文字转语音免费软件哪款好用?一键转换收获真人发声语音

有和小编一样&#xff0c;在休息的时候&#xff0c;比起看纸质书更喜欢听有声书的朋友吗&#xff1f; 在听有声书的时候还可以走动干点小家务&#xff0c;一举多得&#xff0c;但要说缺点&#xff0c;那就是部分热门读物&#xff0c;以及新出的有声书频道需要付费&#xff0c;…

Linux——DNS服务器正向解析搭建教程

系统&#xff1a;CentOS7 1. 安装BIND服务程序&#xff08;安装YUM服务可看上一篇&#xff09; 在 CentOS 上使用 yum 安装BIND服务程序&#xff1a; sudo yum install bind -y2. 配置正向解析 编辑主配置文件 /etc/named.conf 将 listen-on 和 allow-query 改为 any&#…

Flink有状态计算

前言 状态是什么&#xff1f;状态就是数据&#xff0c;准确点说&#xff0c;状态是指 Flink 作业计算时依赖的历史数据或中间数据。如果一个 Flink 作业计算依赖状态&#xff0c;那它就是有状态计算的作业&#xff0c;反之就是无状态计算的作业。 举个例子&#xff0c;服务端…

Springboot连接多数据库

需求&#xff1a;springboot后台需要访问其他数据库的数据&#xff0c;同时操作多个数据库的数据。 pom.xml文件配置&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId&…

PostgreSQL技术内幕14:从插件来看PG扩展性-FDW插件

文章目录 0.简介1.FDW介绍2.使用方式2.1 创建过程2.1.1 创建插件2.1.2 创建 Foreign Server2.1.3 创建 User Mapping(外部服务器映射&#xff0c;本地文件可以不需要&#xff09;2.1.4 创建外部表 2.2 查询流程 3.源码分析3.1 扩展接口分析3.2 和其他部分关联3.2.1 和计划的关联…

020_FEM_Meshing_in_Matlab工具箱PDE之网格划分

Matlab FEM系列 PDE工具箱的网格数据 PDE工具箱对2D几何体&#xff0c;采用三角形网格&#xff0c;对于3D几何体采取四面体网格。 在这两种情况下&#xff0c;网格单元的可以采取二次单元也可以采用一次单元&#xff08;线性&#xff09;。这两个概念在有限元中间指的都是插值…

客户端、PC端、移动端集成发票真伪验真API接口返回值说明

客户端、pc端、移动端集成翔云发票查验接口&#xff0c;在现如今财务管理喝税务合规越来越严的背景下&#xff0c;集成发票真伪验真接口有助于提升财务工作效率&#xff0c;防止税务风险&#xff0c;简化发票管理流程&#xff0c;提升发票管理与报销效率&#xff0c;合规管理税…

Python办公自动化案例:实现word表格转换成Excel表格

案例:通过Python实现word表格转换成Excel表格。 准备工作:一份word文件,里面存放word表格。 Python提供了多种方法来实现Word表格的批量转换成Excel表格,这通常涉及到读取Word文档中的表格数据,然后将这些数据写入到Excel文件中。要通过Python实现Word表格批量转换成Exce…