为什么我的字母表有 40 个字母?或者为什么放弃 STDERR 并不总是一个好主意 [关闭]

2023-11-29

for ((i=000;i<040;i++));do ...

从0到39,有40个值!? ...用于打印A to Z???

for ((i=000;i<040;i++));do
    echo -e $(eval "printf "\\\\%04o" $((65+0$i)) ");
  done 2>/dev/null |
  xargs
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

奇怪的!?

85值,从 70 到 154:

for ((i=0070;i<0155;i++));do
    echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ");
  done 2>/dev/null |
    xargs
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

想要完整的答案,解释缺失值。

:-p

我的完整答案

由于此问题已关闭,无法添加答案,因此有my解释:

这种误解是由于(滥用)使用2>/dev/null!!

因此,只需删除它就会输出:

for ((i=000;i<040;i++));do
    echo -e $(eval "printf "\\\\%04o" $((65+0$i)) ")
done  |   xargs
bash: 65+08: value too great for base (error token is "08")
bash: 65+09: value too great for base (error token is "09")
bash: 65+018: value too great for base (error token is "018")
bash: 65+019: value too great for base (error token is "019")
bash: 65+028: value too great for base (error token is "028")
bash: 65+029: value too great for base (error token is "029")
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

事情变得更加清楚了!

for ((i=000;i<040;i++));do
    echo -e $(eval "printf "\\\\%04o" $((65+0$i)) ")
done 2> >(wc -l >&2) |   xargs
6
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

有6行错误,因为非法8 or 9八进制数字。

所以如果这是八进制,那么你可以

printf %d\\n 040

or

echo $(( 040 ))

转换040八进制到32十进制。然后32操作与6错误,实际上有 26 个输出。

for ((i=0070;i<0155;i++));do
    echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ")
  done 2> >(wc -l >&2) | xargs 
27
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

事实上有 27 个错误,值从... 56 到 108:

printf "%d\n" 0070 0155
56
109

不是 85 个值,而是 53 个:

echo $(( 155 - 70 ))  $(( 0155 - 0070 ))  $(( 109 - 56 ))
85 53 53

再次强调:53 次操作有 27 个错误 = 26 个输出

echo $((53-27))
26

Yes!

这是正确的字母数(在my字母)!

结论

该问题可以重写为:

How 滥用/dev/null可能会做出奇怪的行为

所以重定向时要小心STDERR!避免简单地重定向STDERR to /dev/null:

command 2>/dev/null

并且更喜欢使用以下命令:

command 2> >(grep -v "unwanted message" >&2)

你只是使用octal数字,因为您的数字以 0 为前缀。

所以它是基数 8,而不是基数 10。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的字母表有 40 个字母?或者为什么放弃 STDERR 并不总是一个好主意 [关闭] 的相关文章

随机推荐

  • 帮助使用 int 的 TSQL IN 语句

    我正在尝试在存储过程中创建以下选择语句 dealerids nvarchar 256 SELECT FROM INVOICES as I WHERE convert nvarchar 20 I DealerID in dealerids I
  • 使用 GRPC 流请求进行代理负载平衡

    我们使用流式 RPC 将大文件发送到 GRPC 服务器 像这样 service FileReceiver rpc addData stream DataChunk returns Empty 在这种情况下是否可以使用代理负载均衡器 以便负载
  • 如何防止窗户被移动?

    我将如何阻止表格被移动 我将表单边框样式设置为 固定单一 并希望保持这种方式 因为它在 vista 中看起来不错 看看这个link 您可能对选项 3 感兴趣 它将要求您包装一些本机代码 但应该可以工作 链接底部还有一条评论 显示了一种更简单
  • 一次解析器中有多个匹配项?

    我正在尝试 还 用从日志解析的数据填充多个向量 关键是尽可能快速高效地完成 因此我想仅在一次传递中收集所有数据 而不是规则之间的 或 我发现了接下来的问题 1 每次我使用spirit 但它没有按预期工作时 我发现自己完全不知所措 并尝试了两
  • 在 Crystal Report 2008 中使用 .net 对象作为数据源

    HI all 我创建了一个 net 对象 例如 A 其中包含从表中收集的数据 接下来 我创建一个List a 并传递给SetDataSource 的方法ReportDocument目的 当我运行时 抛出了异常 CrystalDecision
  • MYSQL - 为表中的每个类别选择前 4 条记录

    我有一张桌子INVENTORY其中有其他列CATEGORY and UPDATED 按这些列对表进行排序很容易 SELECT FROM INVENTORY ORDER BY CATEGORY ASC UPDATED ASC 我想要的是获得一
  • Zend Framework - 并未显示所有错误

    在操作方法中 我有以下代码摘录 error reporting E ALL ini set display errors 1 Logger log test Logger类是这样定义的 class Logger public static
  • 为什么我的 git 推送到 HostGator 共享主机失败?

    我正在尝试将本地存储库部署到远程目录 我已经跑了git init bare在此远程目录中 并将正确的 ssh 路径添加到我的本地 git repo 分支 名为 dev git remote add server ssh email prot
  • 使用 SPARQL 获取图形路径[重复]

    这个问题在这里已经有答案了 我们有以下海龟数据集 表示我们想要观察某些属性的图表 prefix v1
  • 如何杀死Android应用程序启动的logcat进程?

    我有 Android 应用程序 在服务启动时实现以下代码 Process process Runtime getRuntime exec logcat v time s arg BufferedReader bufferedReader n
  • 我可以决定调用不存在的对象方法时会发生什么吗?

    我的代码如下所示 obj foo obj might or might not have a foo method 我想知道我是否可以覆盖发生的情况obj foo在我的代码中被调用 例如 obj foo function alert Hel
  • 如何将装箱切片 (`Box<[T]>`) 传递给 C 函数?

    我想向 C 函数公开一个 动态数组 C 函数将拥有数据 稍后将调用我的函数来释放数据 所以它看起来像下面这样 fn get something len mut usize gt mut u8 fn dealloc something dat
  • 正则表达式匹配两个字符之间的多个数字组

    我有一个如下所示的字符串 lt 399969178745962506 gt hello to lt 104729417217032192 gt 我有一本包含两者的字典 如下所示 399969178745962506 One 10472941
  • Win32:如何设置窗口标题、滚动条等的颜色?

    我正在更新黑色背景白色文本的 Win32 应用程序的 GUI 这对我的内容来说很简单 但我怎样才能改变我的子窗口 标题栏 滚动条等 的颜色 我知道有WM CTLCOLORDLG设置对话框的颜色 我也知道有WM NCPAINT 但这会将所有绘
  • 在进入 SQL 查询之前,$_SESSION['username'] 是否需要转义?

    我想知道在 SQL 查询中使用 SESSION 数组中的任何内容之前是否需要转义它 请注意 我不在我的应用程序中使用 cookie 因为我听说它们可以用于会话劫持 多谢 你需要逃离每根弦您传递给 sql 查询 无论其来源如何 即使它是您从数
  • iPhone 中某些应用程序的“打开方式”如何工作?

    据我所知 从iOS SDK 3 2开始 添加了文件类型处理 iOS应用程序可以将自己与某种文件类型关联起来 以便其他应用程序可以使用该应用程序打开此类文件 由于iOS中的沙箱机制 我想知道当appA中的文件被appB打开时 appB注册了这
  • 如何将文本文件复制到C中的字符串?

    我需要将文本文件的内容复制到动态分配的字符数组 我的问题是获取文件内容的大小 谷歌显示我需要使用fseek and ftell 但为此该文件显然需要以二进制模式打开 而这只会产生垃圾 编辑 我尝试以文本模式打开 但我得到了奇怪的数字 这是代
  • x86 迭代 2 字节字数组

    我正在使用 emu8086 在 8086 游戏中编写一个循环 并且我想迭代单词值 而不是像这样声明的数组的字节 player fire dw 320 dup 0 mov bx offset player fire mov cx 320 fi
  • 在Raspberry上安装PyQt5 for Python3.6

    由于我在旧帖子和其他论坛中都没有找到我的问题的答案 因此我想向 stackoverflow 社区寻求建议 我使用的是树莓派 3B 版本 9 4 lite 内核版本为 4 14 71 v7 我用的是python3 6 我安装它如下 sudo
  • 为什么我的字母表有 40 个字母?或者为什么放弃 STDERR 并不总是一个好主意 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 for i 000 i lt 040 i do 从0到39 有40个值 用于打印A to