我的脚本保存为recent.sh
并当前读取为:
#!/bin/bash -x
rcnt() {
ls -t -p | grep -v / | head -n1 | cat
}
当我source recent.sh
执行它时rcnt
,它会打印目录中的最新文件。但是,当我./recent.sh
或sh 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