如何在 csh 的内置 echo 命令中正确使用 excape 字符?

如何在 csh 的内置 echo 命令中正确使用 excape 字符?

我正在尝试使用脚本在安装过程中构建我的 fstab,所以我想要这样的东西:

printf '# Device\t\tMountpoint\tFSType\tOptions\t\tDump\tPass#' >> /mnt/etc/fstab
printf '\n/dev/ada0p4.elia\t/\t\tufs\trw\t\t1\t2' >> /mnt/etc/fstab
printf '\n/dev/ada0p3.eli\t\tnone\t\tswap\tsw\t\t0\t0' >> /mnt/etc/fstab
printf '\n/dev/ada0p2\t\t/unencrypted\tufs\tro\t\t1\t1' >> /mnt/etc/fstab

有没有办法在 csh 中使用 echo 来做到这一点?

我试过了,但效果并不好。例如,下面是一个测试,以及我的 FreeBSD 9.0-RELEASE-p1 机器上的输出:

# echo test\ttest > test
# cat test
testttest

这里出了什么问题?

答案1

Csh 的内置 echo 不支持此功能,因此您需要输入系统 echo 命令的路径。此外,您还需要添加一个反斜杠或将反斜杠放在引号中。

这两种方法都可以。

/usr/bin/echo test\\ttest > test

或者

/usr/bin/echo 'test\ttest' > test

与我之前发布的内容相反,您不需要使用 -e 标志。只有 GNU 的 echo 命令才需要该标志。

相关内容