我使用 fish shell 编写了许多别名和函数。但这一点让我措手不及。有人能帮我了解出了什么问题以及如何修复它们吗?
问题:定义一个别名/函数,ep
通过接受纪元数来打印人类可读的日期
即我想要如下
nehem@ubuntu ~/c/t/c> ep 1569548631
Fri 27 Sep 11:43:51 AEST 2019
我计划使用的命令是-d
众所周知的date
命令的选项
nehem@ubuntu ~/c/t/> date -d '@1569548631'
Fri 27 Sep 11:43:51 AEST 2019
下面是我的 fish 函数,
function ep
set cmd "date -d @$argv[1]"
$cmd
end
现在执行时出现date -d @1569548631: command not found
错误,尽管我觉得这是一个有效的命令。
nehem@ubuntu ~/c/t/n> ep 1569548631
date -d @1569548631: command not found
~/conf/new.fish (line 449):
$cmd
^
in function “ep”
called on standard input
with parameter list “1569548631”
这里出了什么问题?
答案1
要使用子命令,即“set”命令中的“date”命令:
set cmd "date -d @$argv[1]"
你必须使用括号而不是双引号:
set cmd (date -d @$argv[1])
这里您可以找到相关文档。
如果您还想将变量写入标准输出,则必须回显它:
echo $cmd
而不仅仅是
$cmd