Вот простой пример, который воспроизводит проблему:
for el in foo bar
do
echo "$el"
done | head -n 1
echo "This is blank: $el"
Это происходит потому, что для цикла и ваше заявление тузд не связаны каким-либо образом. Вы должны получить данные из вашего цикла/конвейера в mysql.
Самый простой способ сделать это может быть while read
петля:
for el in foo bar
do
echo "$el"
done | head -n 1 | while read -r line
do
echo "This is not blank: $line"
done
В вашем примере это будет:
#!/bin/bash
N=1
ARRAY=(adssa asdsa fdgfd vcbxcxv)
for el in "${ARRAY[@]}"
do echo $el
done | shuf | head -$N | while read -r line
do
mysql -u root -pPass somebase << EOF
INSERT INTO sometable (name) VALUES ('$line');
SELECT * FROM site_user;
EOF
done
Чем проще всего было бы:
#!/bin/bash
n=1
array=(adssa asdsa fdgfd vcbxcxv)
printf "INSERT INTO sometable (name) VALUES ('%s');\n" "${array[@]}" | \
shuf | head -n $n | mysql -u root -pPass somebase
В чем проблема? – rpax