Installer

Ubuntu 18.04 sur la machine virtuelle Google

Objective

J'essaie de créer une boucle for pour créer plusieurs tables en fonction de ma liste de clients

Problème

Je peux très bien créer une table si je cours

user@sql-server:~$ sqlite3 mydatabase.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> create table client (Date integer, cheese integer, id1 integer, id2 integer, id3 integer, id4 integer, id5 integer, id6 integer, id7 integer, id8 integer, id9 integer, id10 integer, id11 integer, id12 integer, id13 integer, id14 integer, id15 integer, id16 integer, id17 integer, id18 integer, id19 integer, id20 integer);
sqlite> .tables
client  test

Mais quand j'essaye de créer un script "test.sh" comme ci-dessous :

#!/bin/bash

set -eu

sqlite3 adloox.db create table test2 (test2 string, testno2 integer);

exit

J'obtiens l'erreur suivante:

user@sql-server:~$ sh -x test.sh
+ set -eu
test.sh: 5: test.sh: Syntax error: "(" unexpected

Je peux voir si j'entre sqlite3 adloox.db .tables, je peux obtenir une réponse du terminal, donc je pense que je dois l'avoir sur une ligne plutôt que sur plusieurs lignes dans mon script, car il demandera alors la saisie manuelle. Mais je trouve étrange que l'erreur que j'obtienne concerne le "(" car là je ne vois pas quelle est la différence. Quelqu'un peut-il confirmer ce qui me manque avec en quoi ce que je fais dans le script diffère du manuel J'ai essayé de chercher une réponse sur Google, mais tout ce que je trouve continue de pointer vers des entrées manuelles. Appréciez toute aide sur celui-ci.

1
El_Birdo 18 févr. 2020 à 16:53

1 réponse

Meilleure réponse

Ajoutez simplement des guillemets autour de votre commande sqlite3 de cette façon :

sqlite3 adloox.db 'create table test2 (test2 string, testno2 integer);'
1
Mathieu Guyot 18 févr. 2020 à 14:00