测试 Bash 中字符串是否包含非空白字符

2024-01-21

我的脚本正在读取并显示 id3 标签。我试图让它回显未知字段是否为空,但我尝试的每个 if 语句都不起作用。 id3 标签是固定大小的,因此它们永远不会为空,但如果没有值,它们会用空格填充。即标题标签的长度为 30 个字符。到目前为止我已经尝试过

echo :$string: #outputs spaces between the 2 ::

if [ -z "$string" ] #because of white space will always evaluate to true

x=echo $string | tr -d ' '; if [ -z "$string" ];#still 评估为 true 但回显 :$x: 它回显 ::

剧本

#!bin/bash
echo "$# files";
while [ "$i" != "" ];
do
   TAG=`tail -c 128 "$i" | head -c 3`;
   if [ $TAG="TAG" ]
   then
      ID3[0]=`tail -c 125 "$1" | head -c 30`;
      ID3[1]=`tail -c 95 "$1" | head -c 30`;
      ID3[2]=`tail -c 65 "$1" | head -c 30`;
      ID3[3]=`tail -c 35 "$1" | head 4`;
      ID3[4]=`tail -c 31 "$i" | head -c 28`;
      for i in "${ID3[@]}"
      do
         if [ "$(echo $i)" ] #the if statement mentioned
         then
            echo "N/A";
         else
            echo ":$i:";
         fi
      done
   else
      echo "$i does not have a proper id3 tag";
   fi
   shift;
done

其中许多答案比应有的要复杂得多,或者可读性差得多。

[[ $string = *[[:space:]]* ]]  && echo "String contains whitespace"
[[ $string = *[![:space:]]* ]] && echo "String contains non-whitespace"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试 Bash 中字符串是否包含非空白字符 的相关文章

  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • Bash shell 中的“[ ]”与“[[ ]]”[重复]

    这个问题在这里已经有答案了 这可能已经得到回答 但我还是要问 我有两个版本的脚本 comp sh bin sh export tDay date Y m d newfile filename tDay filename filename 2
  • 如何向正在运行的 Linux 进程发送 Ctrl-Break?

    我正在调试在 Sun 的 JDK 1 4 2 18 上运行的应用程序中的内存泄漏 该版本似乎支持命令行参数 XX HeapDumpOnCtrlBreak 这可能会导致 JVM 在遇到控制中断时转储堆 如何将其发送到 Linux 机器上的后台
  • GUID 的格式始终相同吗?

    GUID 你会得到类似 aaaef973 d8ce 4c92 95b4 3635bb2d42d5 总是一样吗 它总是具有以下格式吗 8 个字符 4 个字符 4 个字符 4 个字符 12 个字符 我这么问是因为我需要将不带 的 GUID 转换
  • 如何重新安装最新的cmake版本?

    我想在Linux环境下安装cmake的最新版本 我安装了 cmake 3 5 版 但某些应用程序不支持 我尝试通过卸载当前版本来升级它 但是当我使用 sudo apt get install cmake 重新安装时 我重新安装了相同的版本
  • 获取 Bash 和 KornShell (ksh) 中命令的退出代码

    我想写这样的代码 command some command safeRunCommand command safeRunCommand cmnd 1 cmnd if 0 then printf Error when executing co
  • PHP检查字符串是否包含多个单词

    我在互联网上查找了一些可以做到这一点的东西 但它只能用一个词来实现 我正在尝试构建一个脚本来检测我的网站的错误用户名 如果用户名包含数组中的任何单词 则将检测到错误的用户名 这是我编写的代码 但未能运行 bad words array yo
  • Shell 脚本对文件进行计数,然后删除最旧的文件

    我是 shell 脚本新手 所以我需要一些帮助 我有一个充满备份的目录 如果我有超过 10 个备份文件 我想删除最旧的文件 以便仅留下 10 个最新的备份文件 到目前为止 我知道如何计算文件数 这看起来很简单 但是如果计数超过 10 我该如
  • linux命令行:如何简单地将任意字符串输入管道?

    我正在寻找一个非常简单的技巧 假设文件中error txt 有一个很长的字符串 errorMessage key1 some message key2 message 2 由于它的格式不适合读者 如果我想在终端中以格式良好的形式查看它 我可
  • L"" 和 u8"" 之间的区别

    以下有什么区别吗 auto s1 L 你好 auto s2 u8 你好 Are s1 and s2指的是同一类型 如果不是 有什么区别以及首选哪一个 它们不是同一类型 s2是 UTF 8 或窄字符串文字 这C 11标准草案 http www
  • 运行 php 脚本的 Bash 脚本

    我有一个 php 脚本 我想使用 bash 脚本运行它 所以我可以使用 Cron 每分钟左右运行 php 脚本 据我所知 我需要创建 bash 脚本来处理 php 脚本 然后我才能使用 Cron 工具 计时器 到目前为止 我被告知我需要输入
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • ModemManager:mmcli 获取信号强度

    我无法检索 Sierre Wireless MC7304 上的信号强度 另外通过 mmcli 发送 AT 命令似乎不起作用 sudo mmcli m org freedesktop ModemManager1 Modem 0 signal
  • 从 TestContainer 访问 Podman REST API

    我使用 Maven 3 和 Podman 1 8 0 开发一个 Java 应用程序 据我了解 Podman 提供了与 Docker 兼容的 REST API Java集成测试使用TestContainer框架 TestContainer 无
  • 为什么当设置为 TLS 选择器时,ES 和 DS 在 64 位内核上最终会归零?

    下面的 32 位程序调用set thread area 2 http linux die net man 2 set thread area在 GDT 中创建一个条目 该条目旨在用于 TLS 通常将结果选择器放入FS or GS并成功使用
  • sprintf 风格字符串格式化的起源

    字符串格式化概念见sprintf如今几乎可以在任何语言中找到 你知道 用 s d f 等掩盖字符串 并提供变量列表来填充它们的位置 哪种语言最初具有提供此功能的库函数或语言结构 请指定某种来源参考以确认您的主张 以便我们避免纯粹的猜测或猜测
  • 将字符串作为有序字典导入

    我有一个没有扩展名的文件 其中包含这样的行 忽略行之间的间距 但每一行都是单独的行 OrderedDict key1 u value1 key2 value2 OrderedDict key1 u value1 key2 value2 Or
  • 将文件夹中结构化的预构建文件集添加到 android out 文件夹

    我为arm编译了glibc 这与Android glibc或bionic C不同 因为我编译的glibc环境将有助于提供更多api 现在我可以在 Android 运行时将 glibc 环境复制到 system 文件夹中 并且在执行 chro
  • 连接字符串:两个字符串列表的“乘法”[重复]

    这个问题在这里已经有答案了 对于字符串列表 将乘法运算定义为连接 l1 aa bb cc l2 11 22 l3 l1 op l2 预期输出 l3 aa11 aa22 bb11 bb22 cc11 cc22 我们可以简单地使用 for l
  • BASH - 随机排列文件中字符串中的字符

    我有一个文件 filename txt 具有以下结构 gt line1 ABC gt line2 DEF gt line3 GHI gt line4 JKL 我想打乱字符串中的字符not开始机智 gt 输出将 例如 如下所示 gt line

随机推荐

  • 为什么 Flask 会话的值必须是 JSON 可序列化的?

    我正在尝试在 Flask 应用程序中为用户会话实例化一个基本模型实例 我对我的类必须是 JSON 可序列化的要求感到措手不及 我认为会话字典只是存储会话信息的任意构造 但听起来它的使用有更多限制 其中之一显然是 JSON 可序列化的值 还有
  • 可继承的版本 Maven 插件规则

    跑步时mvn versions display dependency updates为了版本 Maven 插件 https www mojohaus org versions maven plugin 我看到很多这样的事情 INFO org
  • 角度分量的类型

    我可以将角度组件类称为类型吗 我看到 Ionic 的用途any对于组件 在 Typescript 中是否可以声明一个仅需要组件类的参数类型 我看到了这个问题 但组件在构造函数中没有任何共同点 将类作为参数传递会导致 不可更新 错误 http
  • 如何将消息从后台服务发布到 UI 片段?

    我有一个问题EventBus来自绿色机器人 我试图从我的同步适配器的后台服务发布一个事件 并将其捕获在一个片段中以更新 UI 问题是 当我尝试从同步适配器发布事件时 我在调试日志中收到以下内容 No subscribers register
  • R闪亮:如何将本地图像放入闪亮的表中

    如果图像存储在我的机器上 我似乎无法在表格中显示图像 如果图像由 URL 指定 我可以让它工作 但我不知道有什么简单的方法来 提供 图像 以便可以通过 URL 找到它 而不是仅使用图像文件名并放置文件与 ui R 和 server R 位于
  • C++ std::filesystem::filesystem_error 试图读取系统卷信息等异常

    我正在尝试解决在尝试递归遍历根驱动器中的所有文件 如 C D 等 时引发的异常 我在 Mingw64 上使用 GCC 编译器版本 9 3 0 尝试读取系统卷信息时出现 std filesystem filesystem error 示例输出
  • CSS 过渡表格行高

    我有一个 CSS 表 所有行的高度相同 但当用户单击其中一行时 所选行应占据整个表格高度 其余行应逐渐消失 我通过简单的设置就可以工作display none在所有其他行上 但我想做一些过渡 我尝试过设置max height到 100 然后
  • 如何使用boto3通过另一个帐户的SQS订阅一个帐户的SNS主题?

    我正在尝试在一个帐户中创建一个 SNS 主题并将其附加到配置规则 我有 3 个这样的帐户 并且想在每个帐户中创建 SNS 主题 现在我想通过第四个帐户的SQS订阅3个不同帐户的所有3个主题 我可以手动完成 有人可以告诉我如何通过 boto3
  • google-apps-script 更改列格式

    需要格式化列 c e 和其他一些列 以使用以下格式显示日期 2014 年 7 月 4 日 不知道该怎么做 谷歌脚本新手 要使用 Apps 脚本执行此操作 您可以使用设置数字格式 数字格式 https developers google co
  • SSL 是如何工作的?

    我知道这不是一个具体的问题 但我阅读了这个主题大约一个小时 但找不到任何有关它的基本信息 SSL 是如何工作的 什么是私钥和公钥 为什么必须在公司购买证书以及自己签署证书有什么区别 到底什么是这样的证书 我读过几个网站 维基百科信息 Sta
  • Python:减少字典的内存使用

    我正在尝试将几个文件加载到内存中 这些文件具有以下 3 种格式之一 字符串 TAB 整型 字符串 TAB 浮点数 int TAB 浮点数 事实上 它们是 ngram 静态文件 以防这有助于解决问题 例如 i love TAB 10 love
  • Angular 2 - 服务在调用方法之前消耗其他服务

    我有这样的场景 后端 json devServer http server1 proServer http server2 use devServer 全局服务 ts import Injectable from angular core
  • 在哪里可以找到 C++11 标准论文? [复制]

    这个问题在这里已经有答案了 可能的重复 在哪里可以找到当前的 C 或 C 标准文档 https stackoverflow com questions 81656 where do i find the current c or c sta
  • FFMPEG API:如何使用 av_open_input_file 连接到 RTSP 流?

    我正在尝试使用 av open input file 连接到一些 RTSP 流 如下所示 AVFormatContext ic avcodec register all av register all av open input file
  • Java 中可序列化和外部化有什么区别?

    有什么区别Serializable http java sun com javase 6 docs api java io Serializable html and Externalizable http java sun com jav
  • 冒泡排序与选择排序相比如何?

    哪种排序技术更快 冒泡排序或选择排序 为什么 两者效率相同吗 维基百科 http en wikipedia org wiki Selection sort说 强调 Among simple average case n2 algorithm
  • 如何通过拒绝selenium webdriver中的弹出窗口来关闭浏览器

    我有一个测试用例 登录后 在某个页面上 当用户尝试关闭浏览器时 它将显示弹出窗口 警报 询问 您可能会丢失数据 确定要继续吗 有两个选项 离开页面 留在页面上 单击特定选项 页面将执行操作 留在页面 不会离开页面 离开页面 将关闭浏览器 现
  • 使用实体框架时,是否可以强制生成的实体类为 Pascal 大小写?

    我正在使用的数据库具有诸如 table name 之类的表名称 很好 但我想生成 TableName 格式的类 以便在 C Pascal 风格中使用 这可能吗 更新 要与 EF6 一起使用 请参阅本页上的其他答案 谢谢亚历克斯的回答 htt
  • ASP.NET Web API 基本身份验证授权标头

    我有一个BasicAuthenticationAttribute检查请求中的 Authorization 标头 但尽管它存在 它仍然认为 Authorization 标头为空 public class BasicAuthentication
  • 测试 Bash 中字符串是否包含非空白字符

    我的脚本正在读取并显示 id3 标签 我试图让它回显未知字段是否为空 但我尝试的每个 if 语句都不起作用 id3 标签是固定大小的 因此它们永远不会为空 但如果没有值 它们会用空格填充 即标题标签的长度为 30 个字符 到目前为止我已经尝