Я пытаюсь выполнить следующую Баш скрипт при загрузке (из /etc/rc.local), но сценарий не получает запустить из-за следующей ошибки синтаксиса:Где моя арифметическая ошибка bash?
+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)) или $ (($ startector + 1)), но я не уверен, как это сделать.
'установить -x' ваш друг здесь. Поместите его на строку после '#!/Bin/bash' и проверьте, что значения ваших переменных - это то, что вы ожидаете. Кроме того, http://shellcheck.net выделит некоторые распространенные ошибки. –
Предлагаемый альтернативный синтаксис: '((newpartnum = partcount + 1))'. Гораздо легче читать этот путь ... – twalberg