考慮:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
第一回聲正常打印4,但第二回聲打印的5而不是6.我失去了一些東西,或者這是一個錯誤? (使用bash 3.00.15)
考慮:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
第一回聲正常打印4,但第二回聲打印的5而不是6.我失去了一些東西,或者這是一個錯誤? (使用bash 3.00.15)
它看起來像bash中的一個實現錯誤(錯誤)。
我用:
#!/bin/bash -p
echo $LINENO
echo ' ' $LINENO '
' $LINENO '
' $LINENO
echo '' '
' $LINENO
其產生:
2
3
3
3
6
支持的理論,前殼認爲已完成了行的變量進行評估。一旦線路完成,它將更新LINENO並繼續。
的Bash版本的測試:3.2.48(MAC),4.1.5(Linux)的
當我使用的語法:
echo '
' $LINENO
它獲取更新的行數。這似乎與評估作爲唯一論據的空字符串有關。
Bash
似乎解釋多串&多行參數的echo
命令要對源代碼文件(腳本),因爲Bash
有來串聯多串&多行參數的只有一行echo
命令放入單個(一行)參數中。連接機制也由一個空字符串''
後跟一個包含換行符echo -e '' + '\n' + $LINENO
的字符串觸發。
#!/bin/bash
# Bash concatenates a multi-string & multi-line argument ...
echo ' ' $LINENO '
' $LINENO '
' $LINENO
# ... into a one line argument.
echo -e "' ' $LINENO '\n' $LINENO '\n' $LINENO\n"
#!/bin/bash
echo "2
3
4
5
6 LINENO: $LINENO" # 6 LINENO: 6
exit
#!/bin/bash
echo "2" " " "
3
4
5
6 LINENO: $LINENO" # 6 LINENO: 2
# echo -e "2" + " " + "\n3\n4\n5\n6 LINENO: $LINENO"
exit
zsh中沒有出現有不好的特性... – Petesh 2011-06-15 16:57:21