2016-03-22 4 views
0

※質問の文句はひどいです、申し訳ありません!私はいくつかのbashの機能を持っている端末で親の名前を使ってbash関数を実行するには?

私はその後、私の.bashrcに私はtestを実行し、hello worldを得ることができ、端末は上記の機能. ~/my_bash_scripts/testFile

を持つファイルをソース

test() {echo "hello wold"} 
test2() {echo "hello wold"} 

を作成します。

私のすべての機能を一緒に保持する親変数を追加する手段があります。例えば、personal test,personal test2

他のすべての宝石と同様に、私はツイーターのものをダウンロードしました。すべてのメソッドの後に、のように、tのような文字が続きます。status

+0

は、関数名として 'test'を使用しないでください。 'test'はbashビルトインです。 &これにより、今後のスクリプトでエラーが発生する可能性があります。 – anishsane

+0

あなたがダウンロードしたものを見て、おそらく答えがそこにあります。 –

+0

@anishsane私は知らなかったが、それは私のポイントをより強くする。 'test'を実行すると失敗します。それで、「私のテスト」と言う方法があります。だから私のテストを一意の名前で始める – relidon

答えて

1

コマンドラインプログラムの作成について質問しています。ここでは単純な1:

#!/usr/bin/env bash 

if [[ $# -eq 0 ]]; then 
    echo "no command specified" 
    exit 
elif [[ $# -gt 1 ]]; then 
    echo "only one argument expected" 
    exit 
fi 

case "$1" in 
    test) 
    echo "hello, this is test1" 
    ;; 
    test2) 
    echo "hello, this is test2" 
    ;; 
    *) 
    echo "unknown command: $1" 
    ;; 
esac 

その後alias personal="/fullpath/to/the/script.sh"を追加し、それを保存し、それを実行chmod +x script.shによって実行可能にし、そしてあなたの.bashrcファイルインチ

これは非常に基本的で単純な例で、bashを使用していますが、好きな言語を使用できます。 Python、Ruby、Node e.t.c

0

引数を使用して最終出力を決定します。

引数の数に「$#」を使用できます。引数だから、bashのプログラム

echo $# 

thatscript foo bar baz quux 

意志出力4

を使って下の2

にeuqalない場合例えば 、コードの上

if [ $# -ne 2 ]; then 
    # TODO: print usage 
    exit 1 
fi 

は終了します

最後に、単語を組み合わせて、stdoutを配置するものを決定することができます。

0

個人的な機能としていくつかの機能をフラグする場合は、いいえ、明示的な方法はありません。基本的に、すべてのシェル関数は自分自身に属しています(ただし、システム管理者やシステム管理者がシステム全体のデフォルトとして定義することもあります)。

となりますか?個人用シェルの起動ファイルの一番上にdeclare -Fの出力があります。そのリストにない機能はあなたの個人的な機能です。

SYSFNS=$(declare -F | awk '{ a[++i] = $3 } 
    END { for (n=1; n<=i; n++) printf "%s%s", (n>1? ":" : ""), a[n] }') 

これは、システムに宣言された関数のコロンで区切られたリストを含んでいる変数SYSFNSを生成します。定義されたもので

、あなたはあなたのものである機能をチェックアウトすることができます:

myfns() { 
    local fun 
    declare -F | 
    while read -r _ _ fun; do 
     case :$SYSFNS: in *:"$fun":*) continue;; esac 
     echo "$fun" 
    done 
} 
関連する問題