相当于csh $<在POSIX shell脚本中

时间:2016-01-11 20:00:44

标签: shell sh csh

我注意到用于编写日志的C shell脚本writeLog.csh具有以下语句:

$<

echo "The date is 20160111 " writeLog.csh record.log 是什么意思?

在此上下文中调用c shell脚本:

{{1}}

这意味着脚本writeLog.csh会将“日期为20160111”写入文件record.log。

如何使用shell脚本而不是c shell脚本执行此操作?

2 个答案:

答案 0 :(得分:1)

$<从csh中的标准输入读取一行。

假设您的意思是Posix shell,read是等效的命令。

您的脚本最终会显示为:

read record
echo "date $record" >> $1

示例:

$ echo "The date is 20160111" | writelog.sh record.log
$ cat record.log
date The date is 20160111

但我想你会想要自动为日志记录加时间戳?在这种情况下,你会想要这样的东西:

read record
echo "`date`: $record" >> $1

这会给你这样的记录:

Mon Jan 11 21:38:58 CET 2016: The date is 2016011

答案 1 :(得分:0)

谷歌吧。

http://linux.die.net/man/1/csh

$&LT;

从标准输入中替换一行,之后不再进行进一步的解释。它可用于在shell脚本中从键盘读取。 (+)虽然csh总是引用$&lt;,好像它等于'$&lt;:q',但tcsh却没有。此外,当tcsh正在等待输入行时,用户可以键入中断来中断要替换该行的序列,但是csh不允许这样做。