мой сценарий оболочки с именем mongoLogin.sh, как показано ниже:
#!/bin/sh
mongo
use demo
show tables
функция, описанная выше, - это вход в систему mongo и отображение таблиц базы данных, называемой demo.
если я выполню его напрямую:
sh mongoLogin.sh
оно работает. однако, если я выполню его таким образом, как показано ниже:
cat mongoLogin.sh | sh
по сравнению с прямым выполнением, он завершится автоматически, как и я ctrl+c после его прямого выполнения. Казалось, что команда sh после канала создаст новый подпроцесс, и этот подпроцесс завершится по какой-то причине.
Существует ли какой-нибудь метод, с помощью которого я могу добиться того же результата, выполнив скрипт через канал?
обновление: при непосредственном выполнении казалось, что действует только первая команда, потому что следующие команды являются операциями монго, а не командами оболочки. И когда я выполняю его по каналу, все команды вступают в силу, но он автоматически завершается.
вывод выполнения через канал, как показано ниже:
xxx@xxxMacBook-Pro:~/Downloads$cat mongoLogin.sh | sh
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("43c55950-f9e2-49ca-a458-
611f8c71eae4") }
MongoDB server version: 4.0.3
switched to db demo
test
bye