如何将文件读入变量并使用shell中具有精确格式的变量进行打印

时间:2016-12-21 08:57:43

标签: linux shell tcsh

我正在尝试将id_rsa文件读入tcsh中的变量var(set var =`cat id_rsa`)以向程序提供输入。但是当我回显变量(echo“$ var”)时,新行已经消失,它是一行文件内容。那么我如何正确地存储和打印变量?

1 个答案:

答案 0 :(得分:1)

不要将tcsh用于此任务,将命令的输出逐字地输入变量是不必要的:

如果必须使用tcsh,有些解决方法是:

使用重定向

% yourtool < id_rsa

将变量存储为base-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éphaneChazelas)。

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