Вот почему исходное выражение не сработало.
Из man bash :
Расширение скобки выполняется перед любыми другими расширениями , и в результате сохраняются любые символы, специальные для других расширений. Это строго текстовое. Bash не применяет синтаксическую интерпретацию контекста расширения или текста между фигурными скобками.
blockquote>Итак, расширение скобки - это что-то, сделанное раньше, как чисто текстовое макро-операции, до расширения параметра .
Корпуса представляют собой высоко оптимизированные гибриды между макропроцессорами и более формальными языками программирования. Чтобы оптимизировать типичные варианты использования, язык становится более сложным, и некоторые ограничения принимаются.
Рекомендация
blockquote>Я бы предложил придерживаться Posix1 функции. Это означает использование
for i in <list>; do
, если список уже известен, в противном случае используйтеwhile
илиseq
, как в:#!/bin/sh limit=4 i=1; while [ $i -le $limit ]; do echo $i i=$(($i + 1)) done # Or ----------------------- for i in $(seq 1 $limit); do echo $i done
1. Bash - отличная оболочка, и я использую ее в интерактивном режиме , но я не ставил bash-isms в мои скрипты. Скриптам может понадобиться более быстрая оболочка, более безопасная, более встроенная. Им может потребоваться запустить все, что установлено как / bin / sh, и тогда есть все обычные аргументы pro-standards. Помните shellshock, aka bashdoor?
Файл mysql.h
из пакета libmysqlclient-dev
Ubuntu находится в /usr/include/mysql/mysql.h
.
Это не стандартный путь поиска для компиляторов, однако /usr/include
.
Обычно вы используете заголовок mysql.h
в своем коде так:
#include <mysql/mysql.h>
Если вы не хотите указывать смещение каталога в вашем источнике, вы можете передать -I
Установите флажок gcc (если это то, что вы используете), чтобы указать дополнительную директорию поиска include, и тогда вам не нужно будет изменять существующий код.
, например.
gcc -I/usr/include/mysql ...
просто используйте
$ apt-get install libmysqlclient-dev
, который автоматически извлечет последнюю версию libmysqlclient18-dev
Я видел более старые версии libmysqlclient-dev (например, 15), помещая mysql.h в странные места например / usr / local / include и т. д.
в противном случае просто выполните
$ find /usr/ -name 'mysql.h'
и укажите путь к папке mysql.h
с флагом -I в файле make. Не чисто, но будет работать.
Для тех, кто использует Eclipse IDE.
После установки полного MySQL вместе с клиентом mysql и сервером mysql и любыми библиотеками mysql dev ,
Вы будете Необходимо рассказать Eclipse IDE о следующем
Вот как вы это делаете.
Добавить mysql.h
1 . Компилятор GCC C -> Включает -> Включает пути (-l), затем нажимает + и добавляет путь к вашему mysql.h В моем случае это было / usr / include / mysql
Добавить библиотеку mysqlclient и путь поиска туда, где mysqlclient Библиотека см. шаги 3 и 4 .
[+1141] 2 [+1141]. GCC C Linker -> Библиотеки -> Библиотеки (-l), затем нажмите + и добавьте mysqlcient
3 . GCC C Linker -> Библиотеки -> Путь поиска в библиотеке (-L), затем нажмите + и добавьте путь поиска в mysqlcient . В моем случае это был / usr / lib64 / mysql , потому что я использую 64-битную ОС Linux и 64-битную базу данных MySQL .
В противном случае, если вы используете 32-битную ОС Linux , вы можете обнаружить, что она находится в / usr / lib / mysql
Вы, вероятно, не указали путь к заголовкам mysql, который можно найти в / usr / include / mysql, на некоторых системах Unix, я думаю. См. этот пост , это может быть полезно.
Кстати, связанный с вопросом того парня выше, о синтетической конфигурации. Можно добавить следующее в ваш ~ / .vimrc:
let b:syntastic_c_cflags = '-I/usr/include/mysql'
, и вы всегда можете проверить вики-страницу разработчиков на github. Наслаждайтесь!
Я думаю, вы можете попробовать этот gcc -I / usr / include / mysql * .c -L / usr / lib / mysql -lmysqlclient -o *
Вы должны сообщить компилятору, где находится файл mysql.h. Это можно сделать, указав путь к заголовку перед компиляцией. В IDE у вас есть настройка, где вы можете указать эти пути.
Эта ссылка дает вам больше информации о том, какие опции использовать при компиляции.
К вашей второй проблеме Вам необходимо связать библиотеки. Компоновщик должен знать, где находятся файлы библиотеки, в которых реализованы используемые вами функции mysql.
Эта ссылка дает вам больше информации о том, как связать библиотеки.
Для CentOS / RHEL:
yum install mysql-devel -y