Здравствуйте, я написал сценарий bash, который компилирует несколько файлов cpp и object в g++. Моя цель - запустить скрипт в vim:!, Но он не работает в vim, только когда я нахожусь снаружи.
Кроме того, я хотел, почему использование% в скрипте не дает мне текущий файл, но вместо этого дает ошибку.
сценарий:
#!/bin/bash
# Search for the main module and remove the ext.
delimain='grep main *.cpp | cut -d. -f1'
# Checks if there are also object files
if [ -f ./*.o ]; then
g++ -g *.cpp *.o -o $delimain.exe
# If There are only cpp file
else
g++ -g *.cpp -o $delimain.exe
fi
Благодарю!
RE свой комментарий
Я использую псевдоним ubuntu 13.10: alias link 'sh ~/bin/lin_script%'
#!/bin/bash
сообщает оболочке, которую должен использовать интерпретатор. Вы, очевидно, новичок в Bash; попробуйте прочитать некоторые введения, чтобы лучше понять.%
является особым для Vim. Эти два варианта не совпадают. См. Мой другой ответ, как передать имя файла сценарию. Вы правы, что %
автоматически расширяется, когда поставляется с командой Ex внутри Vim, но это не относится к внешним скриптам. Что вам нужно сделать, так это передать текущий файл при вызове внешнего скрипта и там ссылаться на аргумент командной строки:
Внутри Vim:
:!linkage.sh %
В вашем скрипте:
if [ $# -gt 0 ]; then
delimain=$1
else
delimain='grep ...