Я получаю bash: синтаксическая ошибка рядом с неожиданным токеном '('

4

Я работаю над сохранением рекордов для моей доски Game Elf JAMMA (412-в-1). В настоящее время я следую этому уроку . Я пытаюсь запустить эту команду

mv hiscore(pre_mame0133u1).dat /mnt/three/usr/local/share/xmame/hiscore.dat

но, как вы можете видеть на моем скриншоте , он возвращает ошибку

bash: синтаксическая ошибка рядом с неожиданным токеном '('

Кеньон Гитингс
источник

Ответы:

9

bash: syntax error near unexpected token '('

Вам нужно выйти из скобок:

mv hiscore\(pre_mame0133u1\).dat /mnt/three/usr/local/share/xmame/hiscore.dat

Примечание:

Для дальнейшего использования вы можете использовать ShellCheck для поиска ошибок в вашем коде bash. Ввод неисправленного сценария дает следующее:

$ shellcheck myscript

Line 1:
mv hiscore(pre_mame0133u1).dat /mnt/three/usr/local/share/xmame/hiscore.dat
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.
          ^-- SC1036: '(' is invalid here. Did you forget to escape it?
          ^-- SC1088: Parsing stopped here. Invalid use of parentheses?

Исправление первой ошибки:

$ shellcheck myscript

Line 1:
mv hiscore\(pre_mame0133u1).dat /mnt/three/usr/local/share/xmame/hiscore.dat
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.
                          ^-- SC1089: Parsing stopped here. Is this keyword correctly matched up?

И исправляем вторую ошибку:

$ shellcheck myscript

Line 1:
mv hiscore\(pre_mame0133u1\).dat /mnt/three/usr/local/share/xmame/hiscore.dat
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.

Дальнейшее чтение

ДэвидПостилл
источник
Итак, я попробовал это, но теперь он говорит: «mv: not stat» hiscore (pre_mame0133u1) .dat ': нет такого файла или каталога`. Я предполагаю, что это связано с тем, что он не может найти файл в папке загрузок ? Но я не знаю точно.
Кеньон Гитингс
@KenyonGeetings Запустите ls -lи посмотрите, есть ли он ...
DavidPostill
Я только что запустил ls -l, и это вывод imgur.com/a/3zzWL . Так что нет, его там нет. Но как мне заставить его появиться там? Спасибо за вашу помощь!
Кеньон Гитингс
@KenyonGeetings Вы "разархивировали архив и получили файл hiscore (pre_mame0133u1) .dat, к которому это привыкло, а остальные нет."?
DavidPostill
1
@KenyonGeetings, в правом верхнем углу скриншота вы разархивировали файл данных в раздел «Загрузки», а не в базу своего домашнего каталога. Терминал запускается в вашем домашнем каталоге, так что вы можете либо изменить каталог на него (чтобы ваши команды относились к загрузкам), выполнив, cd Downloadsзатем запустив команду перемещения выше, или добавив эту часть пути и выполнивmv Downloads\hiscore\(pre_mame0133u1\).dat /mnt/three/usr/local/share/xmame/hiscore.dat
meson800