bash 命令可以工作,但脚本尽管有权限却不能工作

bash 命令可以工作,但脚本尽管有权限却不能工作

我的脚本保存为recent.sh并当前读取为:

#!/bin/bash -x
rcnt() {
    ls -t -p | grep -v / | head -n1 | cat
}

当我source recent.sh执行它时rcnt,它会打印目录中的最新文件。但是,当我./recent.shsh recent.sh它没有在终端上打印任何内容时。 (我尝试从保存它的目录运行它。)

我正在尝试在 Linux Mint 19 的终端中运行它,并且我已经尝试过使用usr/bin/env bash,不带 -x,使用 sh 而不是 bash。权限为777。

如何运行此脚本以便它将打印到我执行它的终端?

我是一个初学者,我可能会忽略一些东西,但我阅读了所有相关的 SO、StackExchange 等答案,这些答案大多建议正确设置权限,我相信我是正确的,bash 的位置(对我来说是 bin/ bash)或其他特定于代码的问题。

答案1

您必须调用您编写的函数才能执行它。
bash 中的函数调用不需要括号。所以你的脚本应该是这样的:

#!/bin/bash
rcnt() {           #Function definition
    ls -t -p | grep -v / | head -n1 | cat
}

rcnt               #Function invocation

相关内容