我是 bash 腳本的新手,我正在嘗試制作一個將大檔案拆分為多個檔案的腳本。我成功地使用了 case 陳述句,但是沒有 case 陳述句我怎么能成功呢?例如,如果我有一個包含 3000 萬行的檔案(一些資料庫檔案)。先感謝您!
echo File which one you want to split
read pathOfFile
echo
countLines=`wc -l < $pathOfFile`
echo The file has $countLines lines
echo
echo In how many files do you want to split?
echo -e "a = 2 files\nb = 3 files\nc = 4 files\nd = 5 files\ne = 10 files\nf = 25 files"
read numberOfFiles
echo
echo The files name with should start:
read nameForFiles
echo
#Split the file
case $numberOfFiles in
a) split -l $(($countLines / 2)) $pathOfFile $nameForFiles;;
b) split -l $(($countLines / 3)) $pathOfFile $nameForFiles;;
c) split -l $(($countLines / 4)) $pathOfFile $nameForFiles;;
d) split -l $(($countLines / 5)) $pathOfFile $nameForFiles;;
e) split -l $(($countLines / 10)) $pathOfFile $nameForFiles;;
f) split -l $(($countLines / 25)) $pathOfFile $nameForFiles;;
*) echo Invalid choice.
esac
uj5u.com熱心網友回復:
您可以只使用陣列來存盤值,然后將字符轉換為整數以用作索引:
# ...
z=('2' '3' '4' '5' '10' '25')
x=$(( $(printf '%d' "'$numberOfFiles") -97 ))
if [[ $x -lt "${#z[@]}" ]] && [[ $x -ge '0' ]] ; then
split -l $(($countLines / ${z[x]})) $pathOfFile $nameForFiles
else
echo "Invalid choice"
fi
如您所見,只需將字符轉換為 ascii,然后負 97 將確保索引在 array 的范圍內排列z。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536801.html
標籤:Linux狂欢壳脚本
