中国建设银行驻莫斯科网站,什么是网站评价,佛山网站建设小程序,外贸网站模板制作(꒪ꇴ꒪ )#xff0c;Hello我是祐言QAQ我的博客主页#xff1a;C/C语言#xff0c;数据结构#xff0c;Linux基础#xff0c;ARM开发板#xff0c;网络编程等领域UP#x1f30d;快上#x1f698;#xff0c;一起学习#xff0c;让我们成为一个强大的攻城狮#xff0…(꒪ꇴ꒪ )Hello我是祐言QAQ我的博客主页C/C语言数据结构Linux基础ARM开发板网络编程等领域UP快上一起学习让我们成为一个强大的攻城狮送给自己和读者的一句鸡汤集中起来的意志可以击穿顽石!作者水平很有限如果发现错误请在评论区指正感谢 一、Shell 脚本简介 Shell 是一种命令行解释器提供了用户与操作系统内核之间的接口。Shell 脚本是一种文本文件其中包含一系列 Shell 命令它们按照脚本的顺序执行。Shell 脚本通常用于自动化任务、批处理和系统管理。 一些基本的 Shell 脚本概念和元素包括
变量 存储和引用数据的标识符。条件语句 根据条件执行不同的命令。循环结构 重复执行一组命令。函数 将一组命令封装为可重复使用的代码块。管道和重定向 通过管道传递输出重定向输入/输出到文件。 Shell 脚本可以使用不同的 Shell如 BashBourne Again SHell、sh、zsh 等。它们有不同的语法和功能但基本的概念在它们之间通常是相似的。 Shell 脚本是 Linux 和 Unix 系统中非常强大和灵活的自动化工具。 二、内容筛选保存 这个脚本的目标是从名为 download.lst 的文件中提取符合特定条件的行然后保存到名为 output.txt 的文件中。脚本使用了 awk 来进行文本处理和筛选并使用了一些基本的 Shell 命令来管理文件。
1.需求 在类似download.lst这样的文件中我们都会遇到一些需要把其中的重要部分来筛选出来并保存的问题发现我们需要的工具包都是以XXX_TARBALL的形式出现并且是在后边。 因此我们的筛选方向就是不以#开头但包含‘ TARBALL ’的行中‘ ’之后的部分就是我们先要的文件名因此shell脚本如下
#!/bin/bash# 定义输入文件和输出文件
input_filedownload.lst
output_fileoutput.txt# 使用awk筛查并保存文件名
awk !/^#/ /TARBALL/ { # 不以#开头且包含TARBALL的行sub(/^[^:]:/, , $0); # 移除:之前的部分gsub(/^[[:space:]]|[[:space:]]$/, , $0); # 去除行首和行尾的空白字符print $0 # 输出处理过的行即文件名
} $input_file | tr -d $output_file # 使用tr命令去除输出行中的空格echo 筛查并保存完成结果保存在$output_file中2.解释这个脚本 文件定义 input_filedownload.lst output_fileoutput.txt 定义了输入文件和输出文件的变量。 awk命令 awk !/^#/ /TARBALL/ { sub(/^[^:]:/, , $0); gsub(/^[[:space:]]|[[:space:]]$/, , $0); print $0 } $input_file !/^#/ /TARBALL/不以 # 开头且包含 TARBALL 的行。 sub(/^[^:]:/, , $0)移除行中 : 之前的部分。 gsub(/^[[:space:]]|[[:space:]]$/, , $0)去除行首和行尾的空白字符。 print $0输出处理过的行即文件名。 tr命令 | tr -d 使用管道将awk的输出传递给tr命令tr -d 用于去除输出行中的空格。 输出信息 $output_file 将处理后的结果保存到输出文件中。 最后echo语句 echo 筛查并保存完成结果保存在$output_file中。 输出一个提示消息。 在筛查时遇到了有变量替换的地方如下 这里呢提供一个极少目标用export定义变量然后sed命令替换的方法。 脚本源码修改为
#!/bin/bash
export CAIRO_VERSION_MICRO0
export ETONYEK_VERSION_MICRO9# 定义输入文件和输出文件
input_filedownload.lst
output_fileoutput.txt# 使用awk筛查并保存文件名
awk !/^#/ /TARBALL/ { # 不以#开头且包含TARBALL的行sub(/^[^:]:/, , $0); # 移除:之前的部分gsub(/^[[:space:]]|[[:space:]]$/, , $0); # 去除行首和行尾的空白字符print $0 # 输出处理过的行即文件名
} $input_file | tr -d | sed -e s/\$(CAIRO_VERSION_MICRO)/$CAIRO_VERSION_MICRO/g \-e s/\$(ETONYEK_VERSION_MICRO)/$ETONYEK_VERSION_MICRO/g $output_fileecho 筛查并保存完成结果保存在$output_file中三、文件下载 这个脚本的目标是从一个名为 outputlist.txt 的文件中读取文件名然后根据指定的 URL 前缀下载这些文件。脚本使用了 curl 命令来执行下载并使用了 while 循环来逐行读取文件名。其中的网址或者具体命令还需自行修改。
#!/bin/bash# 网址前缀
url_prefixhttps://dev-www.libreoffice.org/src/# 从outputlist.txt逐行读取文件名
while IFS read -r file_name; do# 删除文件名中的回车符file_name$(echo $file_name | tr -d \r)# URL编码文件名encoded_file_name$(printf %s $file_name | jq -s -R -r uri)# 拼接完整的下载链接download_url$url_prefix$encoded_file_name# 使用curl下载文件curl -k -L -O $download_url
done outputlist.txt# 输出下载完成的信息
echo 文件下载完成。成功下载的界面 四、扩展安装与错误分析 在运行过程中呢如果未安装一下三个中的任意一个都会报错依次按提示安装即可。
sudo apt-get install dos2unix
install dos2unix: 安装名为 dos2unix 的软件包该软件包提供了将文本文件从 DOS 格式回车换行转换为 Unix 格式换行符的工具。 这个命令对于处理不同操作系统格式的文本文件很有用例如在 Windows 上创建的文本文件因为它们使用不同的换行符。
sudo apt install curlinstall curl: 安装名为 curl 的软件包curl 是一个用于在命令行中进行网络请求的工具支持多种协议。 这个命令安装了 curl 工具使你能够方便地从命令行中下载文件或访问 Web 服务。
sudo apt-get install jq
install jq: 安装名为 jq 的软件包jq 是一个轻量级的命令行 JSON 处理工具。 这个命令安装了 jq它对于处理和解析 JSON 数据非常方便是在 Shell 脚本中进行 JSON 处理的有用工具。 这个错误提示表明 curl 在执行HTTPS请求时遇到了证书验证的问题。有几种可能的解决方案 信任证书 确保你的系统上的证书是最新的。你可以尝试更新证书 在 Ubuntu 上可以运行 sudo apt-get install --reinstall ca-certificates。在 CentOS 上可以运行 sudo yum reinstall ca-certificates. 使用 -k 选项 在 curl 命令中添加 -k 或 --insecure 选项以跳过对证书的验证。请注意这会降低安全性因为它将禁用对服务器证书的验证只有在你确信目标网站是可信任的情况下才使用。推荐直接-k curl -k -L -O $download_url 指定证书文件 使用 --cacert 选项指定一个证书文件 curl --cacert /path/to/ca-certificates.crt -L -O $download_url 更多C/C语言、Linux系统、数据结构和ARM板实战相关文章关注专栏 手撕C语言 玩转linux 脚踢数据结构 系统、网络编程 探索C 6818ARM开发板实战
写在最后
今天的分享就到这啦~觉得博主写的还不错的烦劳 一键三连喔~感谢关注