J'ai écrit une requête :
function print_ui_hosts
{
local sql = "select ........."
print_sql "$ sql"
}
local sql - une très longue chaîne de caractères. La requête n'est pas formatée. Comment puis-je diviser une chaîne en plusieurs lignes ?
J'ai écrit une requête :
function print_ui_hosts
{
local sql = "select ........."
print_sql "$ sql"
}
local sql - une très longue chaîne de caractères. La requête n'est pas formatée. Comment puis-je diviser une chaîne en plusieurs lignes ?
Je voudrais donner une réponse supplémentaire, alors que les autres suffiront dans la plupart des cas.
Je voulais écrire une chaîne sur plusieurs lignes, mais son contenu devait être sur une seule ligne.
sql=" \
SELECT c1, c2 \
from Table1, ${TABLE2} \
where ... \
"
Je suis désolé si cette question est un peu hors sujet (je n'en avais pas besoin pour SQL). Cependant, ce post apparaît parmi les premiers résultats lors d'une recherche de variables shell multi-lignes et une réponse supplémentaire semblait appropriée.
Merci à La réponse de dimo414 à une question similaire Ceci montre comment son excellente solution fonctionne, et montre que vous pouvez également avoir des guillemets et des variables dans le texte :
$ ./test.sh
The text from the example function is:
Welcome dev: Would you "like" to know how many 'files' there are in /tmp?
There are " 38" files in /tmp, according to the "wc" command
#!/bin/bash
function text1()
{
COUNT=$(\ls /tmp | wc -l)
cat <<EOF
$1 Would you "like" to know how many 'files' there are in /tmp?
There are "$COUNT" files in /tmp, according to the "wc" command
EOF
}
function main()
{
OUT=$(text1 "Welcome dev:")
echo "The text from the example function is: $OUT"
}
main
read
n'exporte pas la variable (ce qui est une bonne chose la plupart du temps). Voici une alternative qui peut être exportée en une seule commande, qui peut préserver ou supprimer les sauts de ligne, et qui permet de mélanger les styles de citation selon les besoins. Fonctionne pour bash et zsh.
oneLine=$(printf %s \
a \
" b " \
$'\tc\t' \
'd ' \
)
multiLine=$(printf '%s\n' \
a \
" b " \
$'\tc\t' \
'd ' \
)
J'admets que le besoin de citation rend la chose désagréable pour SQL, mais cela répond à la question (plus généralement exprimée) du titre.
Je l'utilise comme ceci
export LS_COLORS=$(printf %s \
':*rc=36:*.ini=36:*.inf=36:*.cfg=36:*~=33:*.bak=33:*$=33' \
...
':bd=40;33;1:cd=40;33;1:or=1;31:mi=31:ex=00')
dans un fichier provenant à la fois de mon .bashrc
y .zshrc
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.