13

このトピックでは、パラメーターを使用する場合に、エイリアスの代わりにシェルログインスクリプトに関数を追加できることを確認しました。ただし、エイリアスのあるセクションの.cshrcファイル内に次のコードを配置しました。

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

しかし、source .cshrcと入力すると、次のエラーメッセージが表示されます。CシェルとBashシェルの構文は異なりますか?もしそうなら、正しい構文は何ですか?

4

3 に答える 3

21

csh残念ながら、他のほとんどのシェルのように、で関数を定義することはできません。この機能はに存在しませんcsh

唯一の代替手段は、スクリプトを作成して、PATHたとえばのディレクトリに配置すること~/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

引数を1つだけ渡すことを探している場合は\!$、引数を配置したい場所に配置してください。

例えば:

を入れalias mygrep grep -i \!$ myfile.txt~/.cshrc実行するとmygrep mykeywordcshが実行されますalias mygrep grep -i mykeyword myfile.txt

詳細については、こちらをご覧ください。

于 2020-12-19T00:53:41.503 に答える