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