2017-04-12 61 views
0

我需要做的是將一個長文本文件剪成10行,行數相同。所以我寫了下面的腳本。Bash腳本語法錯誤:期望的操作數(錯誤標記爲「=」)

#!/usr/bin/bash 
filename="$1" 
count=0 
file=0 
br=$(wc -l $filename | awk '{print $1}') 
let br = $br/10 
while read -r line 
do 
let count = count + 1 
    name="$line" 
echo $name >> file$file.csv 
if [ $count = $br ];then 
let count=0 
let file+=1 
fi 
done < "$filename" 

腳本產生以下錯誤,我不明白

cut.sh: line 9: let: =: syntax error: operand expected (error token is "=") 

我已閱讀similar topic但還是沒能找到解決的辦法。 任何想法都歡迎。由於

+0

只需複製/粘貼shellcheck.net你的腳本,並修復所有語法錯誤。 – anubhava

回答

2

bash變量賦值不能有空格周圍=。下降的空間周圍=

let br=${br}/10 

執行相同的所有此類案件。

+0

很好。你有,爲什麼結果會產生線的不同數量的第一個和最後的輸出文件,只是順便任何想法? –

+0

@JürgenK。你沒有提供足夠的數據讓我得出結論。 – heemayl

+0

在我的情況下,第一個文件包含95k行。接下來的9個文件左右的16k UND的最後一個文件只有5行。我不明白爲什麼第一個文件很大。輸入文件是164k行。 –

1

在bash數學計算需要用雙括號等:

let count=$(($count + 1)) 
+1

'let'將其參數作爲算術擴展進行評估,您不需要'$(())'。 'let count = count + 1'或者'count = $((count + 1))'都可以。 – ilkkachu

相關問題