2016-12-21 10 views
2

Я пытаюсь прочитать файл id_rsa в переменной var (set var = `cat id_rsa`) в tcsh, чтобы предоставить вход для программа. Но когда я повторяю переменную (echo «$ var»), новые строки исчезли, это однострочный файл. Итак, как правильно сохранить и распечатать переменную?Как прочитать файл в переменной и распечатать его с помощью этой переменной с точным форматом в оболочке

+0

Посмотрите здесь: http://stackoverflow.com/questions/2789319/file-content-into-unix-variable-with-newlines –

+0

я только с помощью эхо «$ вар» вместо эхо $ вар –

+0

вместо этого используйте 'mapfile'. – ABcDexter

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^