13

我在这个主题中看到,如果你想使用参数,你可以在 shell 登录脚本中添加一个函数而不是别名。但是,我将以下代码放在我的 .cshrc 文件中的别名部分:

function gf()
{
    grep -n $1 `find .` | grep -v "can't open"
}

但是当我键入 source .cshrc 时,我收到错误消息:Badly placed ()'s。C shell 的语法与 Bash shell 的语法不同吗?如果是这样,正确的语法是什么?

4

3 回答 3

21

不幸的是,您不能csh像在大多数其他 shell 中那样定义函数。中不存在此功能csh

唯一的选择是创建一个脚本并将其放置在您的PATHeg目录中~/bin

于 2012-12-17T15:00:49.730 回答
1

这是我的解决方案:

#!/bin/csh

if ("$1" == "run") goto $2

echo "Now in default mode"

echo "Calling myself"

csh -f dummy run sub1

csh -f dummy run sub2

exit


sub1:

echo "In sub1"

exit

sub2:

echo "In sub2"

exit
于 2017-02-24T00:05:49.933 回答
0

如果您只想传递一个论点,只需将论点放在\!$您希望论点所在的位置即可。

例如:

如果你投入alias mygrep grep -i \!$ myfile.txt~/.cshrc并且运行mygrep mykeywordcsh就会运行alias mygrep grep -i mykeyword myfile.txt

有关更多信息,请参阅内容。

于 2020-12-19T00:53:41.503 回答