Это не 1
, это часть аргументов, которые интерпретируются bash, это вывод команды.
Во-первых, вы должны знать, что mysql
имеет два режима вывода по умолчанию: таблица и raw . Первый используется, когда выходной поток команды является терминалом и печатает понятный человеку вывод. Второй используется иначе и печатает вывод, легко управляемый скриптами. Вы можете принудительно использовать один или другой, используя параметры, чью документацию я связал.
Во-вторых, вам нужно знать разницу между простыми (subshell)
и $(command substitution)
: в обоих случаях команда запускается в подоболочке, но при подстановке команды вывод команды подставляется в исходную командную строку, которая затем выполняется.
Итак, что произошло, когда вы написали $(mysql command)
, так это то, что его вывод был 1
(необработанный результат) вместо таблицы, которую вы ранее видели, которую затем не удалось проанализировать как команду.
Разницу между подоболочкой и подстановкой команд можно увидеть проще, проверив разницу между (echo 1)
и $(echo 1)
, вторая из которых завершится сбоем точно так же, как ваша текущая команда.