私のプログラムでエラーが発生する理由は完全にわかりません。.bash_profile
syntax error near unexpected token `('
grom()
私の機能でキーワードを使用するとき。私のマスターブランチをオリジナルに自動リセットするbash機能を作りたいです。
# git status
alias gs='git status'
# git stash list
alias gsl='git stash list'
grom() {
branch_name="$(git symbolic-ref --short -q HEAD)"
git fetch && git rebase origin/master && git checkout master && git rebase origin/master && git checkout $branch_name
}
# git stash apply. must append stash@{num}
alias gsa="git stash apply"
関数名を変更すると正常にコンパイルされます。キーワードが見つからないので、grom
何が問題なのかわかりません。関数名を似たようなものに変更したり、同様のものに変更したりするgit-rom
とうまくgroms
コンパイルされます。動作しない特別なキーワードはありますか?これはMac OS Xにあります。
答え1
bash
次のように宣言すると、より良い幸運を享受できます。
function grom() { … }
(ノート:function
動作しません厳格なPOSIXシェルではdash
! )
@八月この回答を編集することで、これはエイリアスの競合(またはそうではないが何らかの方法で定義された組み込み関数)が原因であることが示唆されます。
予約語機能競合をプリエンプトするようにロード順序を変更するか(関数定義中にエイリアスが拡張される)、bashを無効にして問題を回避します。POSIXモード(これにより、組み込み関数をオーバーライドできます。)
bash(1)
マニュアルページから:
関数定義自体が複合コマンドであるため、関数が実行されるのではなく、関数定義を読み取るとエイリアスが拡張されます。したがって、関数で定義されたエイリアスは、関数が実行された後にのみ使用できます。
エイリアスが競合している場合は、ソーシング前に以前の実験を削除してみることunalias grom
ができます(衝突するエイリアスをまだ定義していない限り、このファイルに追加する必要はありません)。.bash_profile
または、新しい端末を起動して再起動してください。