Три варианта:
Передача содержимого в качестве аргумента командной строки:
$./script.sh "$(<some_file)"
Внутри скрипта:
some_data=$1
$1
будет значением первого аргумента командной строки.
Это не удастся, если у вас будет слишком много данных (команда, которую должна будет выполнить оболочка, станет слишком большой ).
Передача имени файла:
$./script.sh some_file
Внутри скрипта:
some_data=$(<"$1")
или
IFS= read -r some_data <"$1"
Подключение стандартного ввода к файлу:
$./script.sh <some_file
Внутри скрипта:
IFS= read -r some_data
Недостатком этого способа является то, что стандартный ввод скрипта теперь подключен к some_file
. Однако он предоставляет пользователю скрипта большую гибкость при передаче данных на стандартный ввод из файла или из конвейера.
Свидетель в выводеapt-cache policy mysql-common
:
500 http://archive.mariadb.org/mariadb-10.3.14/repo/ubuntu bionic/main amd64 Packages … 500 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
Они оба имеют пакет mysql-common
. Как вы можете видеть, версия MariaDB (, обратите внимание, что +maria
строки версии )взяты из сторонних -репозиториев MariaDB, а MySQL — из репозитория пакетов Ubuntu.
К сожалению, содержимое пакетов не совпадает . Более того, установка MySQL зависит от частей пакета MySQL mysql-common
, которых нет в версии этого пакета для MariaDB , в частности программы /usr/share/mysql-common/configure-symlinks
, который устанавливает «альтернативы» Debian/Ubuntu для /etc/mysql/my.cnf
.
Это остановило пакет MySQL mysql-server-5.7
от выполнения последнего шага установки, шага «настройки».
Вам необходимо удалить стороннюю -версию MariaDB пакета mysql-common
, а также установить (и настроить )версию MySQL из репозитория Ubuntu. Тогда шаг «настроить» пакета mysql-server-5.7
будет работать.
Это можно сделать, выбрав правильную версию mysql-common
в (, например )aptitude
, и установив ее. Но, вероятно, самый простой и чистый способ добиться этого:
sources.list
и sources.list.d/
. mysql-server-5.7
и его зависимости еще раз. Следующим шагом будет решение проблем в вашем my.cnf
файле, вызванных этими возвратами, которые могут возникнуть и стать следующей причиной того, что mysql-server-5.7
не удается завершить установку. Это есть в примечаниях к выпуску Ubuntu.
Обратите внимание, :эта ошибка также может возникнуть, если порт (3306 )используется другим приложением. В моем случае у меня был док-контейнер с mysql, который использовал порт 3306, поэтому моя локальная установка mysql была настроена.
$ sudo netstat -nltp | grep LISTEN | grep 3306
$ sudo netstat -nltp | grep LISTEN | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 1017033/docker-prox
sudo apt purge --auto-remove mysql*
sudo rm -r /etc/mysql
sudo rm -r /var/lib/mysql*
sudo apt install mysql-client-8.0 mysql-server-8.0 --fix-broken -y