`cal -h` 命令:Bash 子字符串 `${string:offset:length}` 错误

Win*_*nix 5 bash

当心凯撒三月的艾德斯

我使用的是获得在bash一个奇怪的错误:${string:offset:length}

3 月中旬的第五行输出错误:

$ substring_test.sh
     March 2018       
Su Mo Tu We Th Fr Sa  
             1  2  3  T=   T=   T=   T=   T= 1 T= 2 T= 3 
 4  5  6  7  8  9 10  T= 4 T= 5 T= 6 T= 7 T= 8 T= 9 T=10 
11 12 13 14 15 16 17  T= T= T= 1 T= 1 T= 1 T= 1 T= 1 
18 19 20 21 22 23 24  T=18 T=19 T=20 T=21 T=22 T=23 T=24 
25 26 27 28 29 30 31  T=25 T=26 T=27 T=28 T=29 T=30 T=31 
                      T=   T=   T=   T=   T=   T=   T=   
Run Code Online (Sandbox Code Playgroud)

它显示:

T= T= T= 1 T= 1 T= 1 T= 1 T= 1
Run Code Online (Sandbox Code Playgroud)

但它应该显示:

T=11 T=12 T=13 T=14 T=15 T=16 T=17
Run Code Online (Sandbox Code Playgroud)

代码非常简单:

$ substring_test.sh
     March 2018       
Su Mo Tu We Th Fr Sa  
             1  2  3  T=   T=   T=   T=   T= 1 T= 2 T= 3 
 4  5  6  7  8  9 10  T= 4 T= 5 T= 6 T= 7 T= 8 T= 9 T=10 
11 12 13 14 15 16 17  T= T= T= 1 T= 1 T= 1 T= 1 T= 1 
18 19 20 21 22 23 24  T=18 T=19 T=20 T=21 T=22 T=23 T=24 
25 26 27 28 29 30 31  T=25 T=26 T=27 T=28 T=29 T=30 T=31 
                      T=   T=   T=   T=   T=   T=   T=   
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正确的方向吗?


最终结果

cal -hUbuntu 18.04 LTS于 2018 年 4 月 28 日发布和测试之前,应用下面推荐的修复工作正常。现在使用@Steve H 推荐的修复:

现在.png

有些人对代码的作用感到好奇,所以我提供了上面的屏幕截图。其他人要求提供完整代码,可在此处获得如何获得此终端启动画面?

Mar*_*ton 8

您的问题是cal已经突出显示了当天,并且控制代码正在丢弃偏移量

/tmp/terminal在十六进制编辑器中查看。今天(11 号)是:5F 08 31 5F 08 31,而不是31 31

用于cal -h关闭今天日期的自动突出显示。