TL; DR
Чтобы сохранить "abc"
в $foo
:
echo "abc" | read foo
Конечно, все эти другие ответы показывают, как не делать то, что OP спросил, но это действительно задирает всех нас, кто искал вопрос OP.
read
. # I would usually do this on one line, but for readability...
series | of | commands \
| \
(
read string;
mystic_command --opt "$string" /path/to/file
) \
| \
handle_mystified_file
series | of | commands
очень сложная серия команд с каналами. mystic_command
может принимать содержимое файла как stdin вместо пути к файлу, но не для аргумента --opt
, поэтому он должен входить как переменная. Команда выводит измененный контент и обычно перенаправляется в файл или передается по другой команде. (Например, sed
, awk
, perl
и т. Д.) read
принимает stdin и помещает его в переменную $string
read
и mystic_command
в «вспомогательную оболочку» с помощью скобок не требуется, но заставляет его течь как непрерывный канал, как если бы две команды находились в отдельном файле сценария. Всегда есть альтернатива, и в этом случае альтернатива является уродливой и нечитабельной по сравнению с моим примером выше.
# my example above as a oneliner
series | of | commands | (read string; mystic_command --opt "$string" /path/to/file) | handle_mystified_file
# ugly and unreadable alternative
mystic_command --opt "$(series | of | commands)" /path/to/file | handle_mystified_file
Мой путь полностью хронологический и логический. Альтернатива начинается с 4-й команды и выдает команды 1, 2 и 3 в подстановку команд.
Вы можете попробовать это
. Для одной таблицы передайте имя таблицы, как показано ниже.
exec sp_spaceused N'dbo.MyTable'
Для всех таблиц используйте следующий запрос.
exec sp_MSForEachTable 'exec sp_spaceused [?]'