我的bash算术错误在哪里?

时间:2015-03-05 16:39:27

标签: bash

我试图在启动时运行以下bash脚本(来自/etc/rc.local),但由于以下语法错误,脚本无法运行:

+1") syntax error: invalid arithmetic operator (error token is ''

以下是完整的

脚本
#!/bin/bash
distro=$(cat /etc/issue | head -n 2 | tr -d "\n" | tr "[:upper:]" "[:lower:]")
device=$(fdisk -l | grep -w 8e | head -n 1 | cut -c-8)
partcount=$(fdisk -l | grep $device | sed 1d | grep -c $device)
newpartnum=$(($partcount+1))
startsector=$(fdisk -l | grep -w 8e | tail -1 | tr " " "\n" | sed "/^$/d" | head -n 3 | tail -1)
newstartsector=$(($startsector+1))
endsector=$(fdisk -l | grep sectors | head -n 1 | tr " " "\n" | tail -2 | head -n 1)
newendsector=$(($endsector-1))
fdisk $device <<EOF
n
p
$newpartnum
$newstartsector
$newendsector
t
$newpartnum
8e
w
EOF

sed -i'.bak' '/00resize/d' /etc/rc.local
echo "sh /root/01setup.sh" >> /etc/rc.local

#reboot

我假设错误是$(($ partcount + 1))或$(($ startsector + 1))但我不确定如何。

1 个答案:

答案 0 :(得分:1)

我的猜测是您通过在Windows上编辑bash脚本引入了一个或多个 CR 代码。尝试通过dos2unix运行脚本,看看问题是否消失。

(如果您没有dos2unix,可以尝试tr -d \\r <script >newscript