如何在运行时在ksh中调用函数和脚本名称。
例如:功能测试
function test { echo "shankar" }
脚本:emptycheck.ksh
运行时间:
./emptycheck.ksh test # <---- Here I want function name (test) here
答案 0 :(得分:1)
目前尚不清楚你的目标是什么,但也许这很有用:
$ cat a.sh
#!/bin/bash
foo() { echo foo; }
bar() { echo bar; }
${1-foo}
$ ./a.sh foo
foo
$ ./a.sh
foo
$ ./a.sh bar
bar
答案 1 :(得分:-1)
如果您不想使用getopts并激活所有功能,请使用点读取当前环境中的函数:
我用其他语法复制了William Pursell的例子:
$ cat a.sh
#!/bin/bash
foo() { echo Echoing foo; }
bar() { echo Echoing bar; }
$ . a.sh
$ foo
Echoing foo
$ bar
Echoing bar
答案 2 :(得分:-1)
你可以命名一个函数“test”,但如上所述,它很危险。
在采购文件时不要打扰“#!...”。如果你在采购时没有运行bash,那就不会改变图片。
如果您坚持为现有命令或内置命名函数(有充分理由),然后使用现有命令或内置命令,则使用内置的“命令”, “避免使用该名称的任何别名或功能,并选择默认定义”。
e.g。以前的“测试”现在可以访问“命令测试......”
因此,正确使用“命令”命令是在一个重写函数内部,例如,function cd {
# clean up garbage in the current directory, so then:
command cd $* # executes the "real" cd, so you can:
# do whatever useful things you may what to do on arriving in the new one:
# e.g. i do a "dotlib", which sources any ".*rc" files in the current directory.
}
function comment { echo $* 2>/dev/null; }
comment good luck!