Bash записать в файл (переменные?) - PullRequest
0 голосов
/ 07 декабря 2010

ОК, пытаясь записать SQL-запрос в текстовый файл. Я попробовал кошку, и эхо не повезло.

Вот что я хотел бы записать в файл:

   USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit;

это то, что я получаю при использовании cat или echo (может быть, мне нужен какой-то переключатель?):

USE vsftpd;
CREATE TABLE  (
uid=0(root) gid=0(root) groups=0(root) INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 VARCHAR( 30 ) NOT NULL ,
 VARCHAR( 50 ) NOT NULL ,
UNIQUE (

)
) ENGINE = MYISAM ;

quit;

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Трудно сказать, как это исправить, не видя точную команду, которую вы используете, но я подозреваю, что оболочка выполняет подстановку обратной цитаты для вашего текста. Итак, где у вас есть

CREATE TABLE `accounts`

bash пытается выполнить accounts в качестве команды и заменить текст в кавычках стандартным выводом команды. И поскольку в вашем пути, вероятно, нет такой команды, раздел в кавычках исчезает в выводе.

Попробуйте экранировать каждый символ `с помощью обратной косой черты, например:

CREATE TABLE \`accounts\`
1 голос
/ 07 декабря 2010

Если вы запускаете вещи с обратными галочками в shell, он оценит команды, заключенные в ``. Так что один из способов сделать это - использовать одинарную кавычку так:

$ echo '   USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit;
' > file.sql

$ more file.sql # verify content is correct
0 голосов
/ 07 декабря 2010

в любом случае, думаю, я могу опубликовать все это сейчас, если кто-то еще использует vsftpd, и вы мне помогли.Вот скрипт для vsftpd с mysql для виртуальных пользователей. Здесь есть все, кроме создания новых пользователей, о которых вы можете узнать, как написать это из того, что дано:

...