Portál AbcLinuxu, 22. prosince 2025 01:17
[root@zero ~]# X=$(echo 'select * from user' |mysql -N -D mysql -u root|head -n 1) [root@zero ~]# echo $X localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0
IFS=$'\n' X=($(mysql -N -D mysql -u root <<<<'select * from user'))
${#X} vrací hodnotu špatně a bez ohledu na nastavené IFS. Jsem blbej já, nebo bash?
${#X[*]}.
${#x} pro skalár dává délku řetězce
${#x} pro pole dává délku prvního prvku (stejně jako $x první prvek)
${#x[*]} pro pole dává počet prvků pole
Toto vše mi funguje. Můžeš uvést nějaký příklad, kvůli kterému nebudu muset přidávat do mysql tabulky?
#!/bin/bash
USER="root"
#PASS="-pHESLOjeHESLO"
#note: from DATABASE_NAME.TABLE_NAME
SQL_QUERY="
select *
from
mysql.user
"
mysql -N -u $USER $PASS <<<$SQL_QUERY | \
gawk -F'\t' '{print $1,$2}' | #print 3,4...x kolko je treba :)
while read COL1 COL2 #COL3 ... COLx kolko je treba :)
do
#napr.
echo "COL1: $COL1 | COL2: $COL2"
done
IFS=$'\n'
for row in $(mysql -N -D mysql -u root -e 'select * from user')
do (
IFS=$'\t'
i=1
for col in $row
do
echo -n "| COL$i: $col "
let i++
done;
echo "|"
)
doneneboIFS=$'\n'
for row in $(mysql -N -D mysql -u root -e 'select * from user')
do (
IFS=$'\t'
cols=($row)
echo -e "host: ${cols[0]}\tname: ${cols[1]}"
)
donenebodata="$(mysql -N -D mysql -u root -e 'select * from user')"
data="${data//$'\n'/|}"
IFS='|'
for row in $data
do
cols=(${row//$'\t'/|})
echo "host: ${cols[0]} | name: ${cols[1]}"
done
mysql -N -D mysql -u root -e 'select * from user' |
while read row
do
IFS='|'
cols=(${row//$'\t'/|})
echo "host: ${cols[0]} | name: ${cols[1]}"
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.