An interesting problem I ran into recently: I have a shell script that I run about once a month that "screen-scrapes" from the output of another program using the substring capability, e.g. ${data_line:12:2}. This is pulling out the two-digit month ranging from "01" to "12". This worked fine, even giving the right answers, for months earlier in the year. Then came August, and it went sideways because the leading "0" was forcing the number to be interpreted as octal. My first reaction was, What's going on, this has run just fine for months. The second reaction was, WTF, who uses octal anymore? But I understand it is because of C-language compatibility. I could use the [base#]n form but that gets awkward. My proposal is to add a new "shopt" option, say called "XOCTAL", that would suppress the octal interpretation of numbers with leading zeros. The default would be "off", so scripts would run just as now. Just the existence of this option might alert non-expert shell coders to the subtle and surprising "bug" that I encountered. Even the venerable BASH shell still has room for modernization and improvement. Thank you for your interest and consideration.
|====================== |Bruce Fowler 410-320-8200 |[ 39°1.55'N - 76°28.16'W ] |======================