2017-06-14 21 views
0

date_time文字列の前に文字列を付けるbash関数が必要です。数値引数を求めるBash文字列の連結

show_neb_2017_05_20_16_55

私は期待しています私の現在の機能は、それが数値引数を必要としていることを除いて、これを実行しているだろう。

function show_neb() { 
     a='show_neb_'$(date +"%Y_%m_%d__%H_%M") 
     return $a 
     } 

    echo $(show_neb) 

私はそれが動作すると期待していましたが、そうではありません。これは文字列への直接的な標準出力ではありませんか?

+1

欠落している点は 'return'だけが文字列ではなく、成功/失敗を返します。試していたことをやるには 'echo" $ a "; return 0; ' –

答えて

2

returnは、任意の文字列値ではなく、関数の整数終了コードを提供するためにのみ使用できます。戻り値をシミュレートするには、標準出力に書き込んだ後、コマンド置換を使用してそれを取得する必要があります。

show_neb() { 
    date +"show_neb_%Y_%m_%d__%H_%M" 
    # Replacing echo "show_neb_$(date +"%Y_%m_%d__%H_%M")" 
} 

val=$(show_neb) 

シェル関数は実際には通常の意味では機能しません。彼らはソースとなるより多くのメモリ内のシェルスクリプトに似ています。

+0

関数を実行するだけで、自分が望むことができます。 – 123

+0

はい。私は変数に "戻り値"を代入したい場合に必要なものを強調しています。 – chepner

+0

明示的な 'echo'または' printf'':) 'ではなく、関数内の' date'出力をうまく利用します(もちろんこの場合、 'show_neb'関数を完全に取り除くことができ、コマンド'date'コマンド自体の代入) –

関連する問題