與下面的代碼中,我不斷收到以下錯誤:bash腳本 - 無效的算術運算符
#!/bin/bash
sourceFile="file1.log"
targetFile="/etc/network/interfaces"
numLines=$(wc -l ${sourceFile})
if ((counter >= "$numLines" || ! -f "${sourceFile}")); then
echo "invaild file"
exit 0
fi
while [ "$counter" -le "$numLines" ]; do
sed -i "${2} s/.*/wireless-key s: $(sed -n "${counter}"p <<< "${sourceFile}")/" "${targetFile}"
counter=$((counter + 1))
done
與上面的代碼中,我不斷收到以下錯誤:
> ./2test.sh: line 5: ((: counter >= 12 file1.log || ! -f file1.log : syntax error: invalid arithmetic operator (error token is ".log || !
> -f file1.log ") ./2test.sh: line 9: [: : integer expression expected
'wc -l $ {sourceFile}'打印'12 file1.log',這就是'$ numLines'的值。 'numLines =「$(wc -l <」$ {sourceFile}「)」'應該只給你數字(本週引用是免費的,享受)。 – Biffen
看起來像'echo'無效文件'>&2; 1號出口會更合適。錯誤應打印到stderr,如果失敗,腳本應該返回非零值。 –
另外'! -f「$ {sourceFile}」'在'(())'中不是有效的代碼,也許可以在方括號中嘗試它,例如'((counter> =「$ numLines」))|| [[!! -f「$ {sourceFile}」]]' – 123