unix - 如何在 C-shell echo 命令中包含换行符?

标签 unix csh

这听起来简单得离谱,其他 shell 也是如此。但我似乎无法弄清楚如何获得回显来显示换行符。例如 -

cat myFile

按实际存在的方式显示文件,这就是我想要的 -

this
is
my
file

而我的脚本包含以下内容 -

#!/bin/csh
set var = `cat myFile`
echo "$var"

删除所有换行符,这不是我想要的 -

this is my file

提前致谢。

最佳答案

问题不在于 echo 命令,而在于 csh 对反引号的处理。当你执行

set var = `cat myFile`

myfile 中的换行符永远不会存储在 $var 中;它们被转换为空格。我想不出任何方法来强制 csh 变量包含从文件中读取的换行符,尽管可能有办法做到这一点。

sh 及其派生词确实按照您想要的方式运行。例如:

$ x="`printf 'foo\nbar'`"
$ echo $x
foo bar
$ echo "$x"
foo
bar
$ 

赋值中的双引号导致换行符(最后一个除外)被保留。 echo $x 用空格替换换行符,但 echo "$x" 保留它们。

最好的办法是做一些不同于尝试将文件内容存储在变量中的事情。您在评论中说您正在尝试发送包含日志文件内容的电子邮件。因此,将文件的内容直接提供给您正在使用的任何邮件命令。我没有所有的细节,但它可能看起来像这样:

( echo this ; echo that ; echo the-other ; cat myFile ) | some-mail-command

强制引用:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

关于unix - 如何在 C-shell echo 命令中包含换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980537/

相关文章:

ubuntu - 缺少 .cshrc 文件

python - 如何在 Python 中对 Active Directory 服务器进行两阶段身份验证?

csh - csh中删除最后一个单词的快捷键是什么?

bash - shell 脚本可以设置调用 shell 的环境变量吗?

linux - 在csh中提取字符串

perl - 解释 Perl "preamble"的狡猾

bash - 如何解析 mmcli 输出中的调制解调器编号、标识符和名称?

c - 在我退出之前处理 sigaction 时我的打印品没有出现

旨在在 Solaris 中自行重启的 C 程序

python - 在 Unix 上爬取特定子目录中的所有 .php 文件