我有一个奇怪的问题增加了一个bash变量,看起来 在我第一次尝试增量时不能破坏,我不能 固定下来,这里是我正在做的一个示例和调试输出, 任何人看到任何理由,这不应该工作?Bash增量破坏脚本
我目前GNU bash, version 4.2.45(1)-release (i686-pc-linux-gnu)
#!/bin/bash
set -ex
declare -i elem=0
echo $elem # 0
((elem++)) # breaks
echo $elem # 1 but never encountered
while IFS=$'\n' read -r line || [[ -n "$line" ]]; do
((elem++))
echo $elem
done <"${1}" # foo\nbar\nbaz
输出
./incr.sh test
+ declare -i elem=0
+ echo 0
0
+ (( elem++ ))
最怪异的部分是整个程序的增量正确更改初始增量器来((elem+=1))
,这似乎非常马车的眼球。 ..
#!/bin/bash
set -ex
declare -i elem=0
echo $elem
((elem+=1))
echo $elem
while IFS=$'\n' read -r line || [[ -n "$line" ]]; do
((elem++))
echo $elem
done <"${1}" # foo\nbar\nbaz
输出
+ declare -i elem=0
+ echo 0
0
+ (( elem+=1 ))
+ echo 1
1
+ IFS='
'
+ read -r line
+ (( elem++ ))
+ echo 2
2
+ IFS='
'
+ read -r line
+ (( elem++ ))
+ echo 3
3
+ IFS='
'
+ read -r line
+ (( elem++ ))
+ echo 4
4
+ IFS='
'
+ read -r line
+ [[ -n '' ]]
哪里是'文件名= test'来自哪里?我在脚本中没有看到。 – Barmar
对不起,我改变了代码,只是使用'$ 1'作为输入文件,如果你再看看我改变了输入,sry我使用的是旧版本的输出 – ehime
我无法复制它:http://ideone.com/ jm3CQR – Barmar