首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摆脱“警告:命令替换:忽略输入中的空字节”

摆脱“警告:命令替换:忽略输入中的空字节”
EN

Stack Overflow用户
提问于 2017-09-12 04:12:22
回答 2查看 41.5K关注 0票数 25

当我运行model=$(cat /proc/device-tree/model)时,我得到-bash: warning: command substitution: ignored null byte in input

代码语言:javascript
复制
bash --version
GNU bash, version 4.4.12(1)-release (arm-unknown-linux-gnueabihf)

使用bash版本4.3.30,一切正常

我知道问题出在文件中的终止\0字符,但是我怎么才能抑制这条愚蠢的消息呢?我的整个脚本都搞乱了,因为我在bash 4.4上

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-12 04:36:54

您可能需要两种可能的行为:

  • 一直读到第一个NUL。这是性能更好的方法,因为它不需要shell的外部进程。如果读取了内容但输入中不存在NUL (否则将导致非零退出状态),则在失败后检查目标变量是否为非空可确保成功退出状态。

IFS= read -r -d '‘模型

  • 读取忽略所有NULs。这将使您的行为等同于较新的bash (4.4)版本。

model=$(tr -d '\0‘

您也可以只使用内置来实现它,如下所示:

model="“while IFS= -r -d '‘substring || [ $substring ];do model+="$substring”do substring

票数 21
EN

Stack Overflow用户

发布于 2017-09-12 04:33:30

如果您只想删除空字节:

代码语言:javascript
复制
model=$(tr -d '\0' < /proc/device-tree/model)
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46163678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档