`date` 命令在 fish shell 下无法按预期工作

`date` 命令在 fish shell 下无法按预期工作

我使用 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

相关内容