От bash
страница справочника:
Любой символ в IFS, которая не является пробелом IFS, наряду ни с какими смежными пробельными символами IFS, разграничивает поле. Последовательность пробельных символов IFS также рассматривают как разделитель.
Это означает, что пробел IFS (пространство, вкладка и новая строка) не рассматривают как другие разделители. Если Вы хотите получить точно то же поведение с альтернативным разделителем, можно сделать некоторый свопинг разделителя с помощью tr
или sed
:
var=":abc::def:::ghi::::"
arr=($(echo -n $var | sed 's/ /%#%#%#%#%/g;s/:/ /g'))
for x in ${!arr[*]} ; do
el=$(echo -n $arr | sed 's/%#%#%#%#%/ /g')
echo "# arr[$x] \"$el\""
done
%#%#%#%#%
вещью является волшебное значение для замены возможных пробелов в полях, она, как ожидают, будет "уникальна" (или очень unlinkely). Если Вы уверены, что никакое пространство никогда не будет в полях, просто отбросьте эту часть).
$ mysql -p$pass -u$user -h$otherhost $db < dumpfile
Это принимает dumpfile
текст от mysqldump
, содержа необработанные SQL-операторы.
Важно что там не быть никаким пространством между -p
и пароль. (Я предполагаю, что Вы хотите автоматический вход в систему.), Если пароль сразу не следует -p
, mysql
интерпретирует опцию как значение, что она должна попросить в интерактивном режиме пароль и рассматривает аргумент отдельного пароля как имя DB.
Чтобы это работало, $user
должен иметь разрешение войти в систему, отбросить таблицу, составить таблицу и вставить строки в ту таблицу, все как удаленный пользователь. MySQL разделяет удаленные и локальные полномочия для пользователей, таким образом, это - легкое прерывание для падения в. Поскольку, позволяя удаленному пользователю это много питания является угрозой безопасности, можно хотеть использовать SSL (--ssl*
опции) с mysql
. Иначе я не знаю, что позволил бы удаленному пользователю делать такие вещи.