.bashrcには、helloという関数があります。
function hello() {
echo "Hello, $1!"
}
次のように、シェルからhello()を呼び出すことができます。
$ hello Lloyd
出力を取得します。
> Hello, Lloyd!
トリックは何ですか?
(もちろん、私が念頭に置いている実際の機能はもっと複雑です。)
編集:これは本当に関数の構文エラーが原因だと思います! :(
function coolness() {
if[ [-z "$1"] -o [-z "$2"] ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
関数内のテストは機能しません。-z句を角かっこで囲むことはできません。また、ifと開き角かっこの間にスペースが必要です。次のようになります。
function coolness() {
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
関数をエクスポートできます。あなたの~/.bashrc
関数を定義した後、export -f functionname
。
function hello() {
echo "Hello, $1!"
}
export -f hello
その後、シェルプロンプトで、またそこから呼び出す他のスクリプトで関数を使用できます。
子プロセスで使用する場合を除き、関数をエクスポートする必要はないことに注意してください(前の文の「また」)。通常、それでも、関数を使用するファイルにsource
する方が良いでしょう。
編集:
Bash条件ステートメントの角かっこは角かっこではなく、コマンドです。周囲にスペースが必要です。条件をグループ化する場合は、括弧を使用します。機能は次のとおりです。
function coolness() {
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
その条件を記述するより良い方法は次のとおりです。
if [[ -z "$1" || -z "$2" ]]; then
二重括弧は、単一の括弧よりも多くの機能を提供するためです。
スクリプトに次の行を含めます
source .bashrc
sourceコンストラクトで試してください。
.bashrc
に加えられた変更は、新しいターミナルセッションでのみ有効になります。現在のターミナルセッションに変更を適用する場合は、.bashrc
を再読み取りするようシェルに指示する必要があります。これへの最短の方法は.
コマンドを使用することです。これはsource
の同義語です:
[user@linuxPc]$ . ~/.bashrc
$ source .bashrc