Я пытаюсь прочитать файл id_rsa в переменной var (set var = `cat id_rsa`) в tcsh, чтобы предоставить вход для программа. Но когда я повторяю переменную (echo «$ var»), новые строки исчезли, это однострочный файл. Итак, как правильно сохранить и распечатать переменную?Как прочитать файл в переменной и распечатать его с помощью этой переменной с точным форматом в оболочке
2
A
ответ
0
Не используйте Tcsh для выполнения этой задачи, получить вывод команды в переменную в стенографических излишне сложно:
Некоторые обходные если вы должны использовать Tcsh являются:
использование Перенаправление
% yourtool < id_rsa
Сохраните переменную как базу-16 (или что-то еще) закодированную информацию, чтобы она не содержала символов новой строки, которые будут искажены tcsh.
% set hex_contents = `<id_rsa xxd -l 16 -p`
Использовать временный файл?
% set tempfile = `mktemp`
% program > tempfile
... позже
% <tempfile other-program
Я задал подобный вопрос почти год назад; https://unix.stackexchange.com/questions/284220/tcsh-preserve-newlines-in-command-substitution
В случае, если вам любопытно, что вы получаете дословное содержание (кредит Stéphane Chazelas).
set temp = "`(some command; echo .) | paste -d . - /dev/null`"
set var = ""
set nl = '\
'
foreach i ($temp:q)
set var = $var:q$i:r:q$nl:q
end
set var = $var:r:q
Посмотрите здесь: http://stackoverflow.com/questions/2789319/file-content-into-unix-variable-with-newlines –
я только с помощью эхо «$ вар» вместо эхо $ вар –
вместо этого используйте 'mapfile'. – ABcDexter