Я пытаюсь получить данные о предоставлении пользователю mysql и передать его в файл
хари =mysql -sN -e "show grants for mysqladm";
эхо $ hari
GRANT ALL PRIVILEGES ON *prod_server_list.txt stage_server_list.txt user_grants1.txt user_grants.txt user_list_temp1.txt user_list_temp.txt* TO 'mysqladm'@'%' IDENTIFIED BY PASSWORD '*##############' WITH GRANT OPTION GRANT EXECUTE ON PROCEDURE `soxdv`.`chgpw` TO 'mysqladm'@'%' GRANT PROXY ON ''@'' TO 'mysqladm'@'%' WITH GRANT OPTION
Он получает имя файла .txt в каталоге
Фактический результат должен быть таким, как показано ниже
show grants;
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for mysqladm@% |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mysqladm'@'%' IDENTIFIED BY PASSWORD '*#############################' WITH GRANT OPTION |
| GRANT EXECUTE ON PROCEDURE `soxdv`.`chgpw` TO 'mysqladm'@'%' |
| GRANT PROXY ON ''@'' TO 'mysqladm'@'%' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
*.*
заменяется именами файлов .txt
Пожалуйста, предложите мне.
Вам нужно заключить в кавычки то, что вы повторяете, иначе echo будет интерпретировать подстановочный знак с тем, что он находит в каталоге, соответствующем шаблону. Это называется подстановкой и может быть отключено.
box:[~/tmp/test]$ touch file.txt other.txt
box:[~/tmp/test]$ foo='*.txt'
box:[~/tmp/test]$ echo $foo
file.txt other.txt
nox:[~/tmp/test]$ echo '$foo'
$foo
box:[~/tmp/test]$ echo "$foo"
*.txt
box:[~/tmp/test]$ set -f
box:[~/tmp/test]$ echo $foo
*.txt
Я бы рекомендовал при необходимости использовать двойные или одинарные кавычки.