これは壊れています
alias f='git flow feature'
complete -F __git_flow_feature f
最終的に(2つの「タブ」の後)機能しますが、「タブ」を押すたびにエラーがスローされます。
-bash: [: 1: unary operator expected
何か案は?
これは壊れています
alias f='git flow feature'
complete -F __git_flow_feature f
最終的に(2つの「タブ」の後)機能しますが、「タブ」を押すたびにエラーがスローされます。
-bash: [: 1: unary operator expected
何か案は?
私もこの問題を抱えていて、Google検索を行うたびにこの投稿に戻ってきました。
Michalの回答とDaenythのコメントを使用して見つけた解決策を投稿しています...
私の git-flow.bash は同一でしたが、git 補完ファイルは異なる可能性があると思います。
これを修正するには、次の場所にある git 補完ファイルを変更する必要がありました/etc/bash_completion.d/git
年:
# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [ $c -lt $cword ]; do
word="${words[c]}"
for subcommand in $1; do
if [ "$subcommand" = "$word" ]; then
echo "$subcommand"
return
fi
done
c=$((++c))
done
}
新しい:
# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [[ $c -lt $cword ]]; do
word="${words[c]}"
for subcommand in $1; do
if [ "$subcommand" = "$word" ]; then
echo "$subcommand"
return
fi
done
c=$((++c))
done
}
新しいコードに追加しなければならなかった二重括弧に注意してください。それが私が行った唯一の変更でした。
git-flow-completionだけを使用しないのはなぜですか? bashの手順は次のとおりです。
$ cd /etc/bash_completion.d
$ sudo wget https://raw.githubusercontent.com/bobthecow/git-flow-completion/master/git-flow-completion.bash
$ exec $SHELL
私がするとき、それは私のために働きます:
とにかく、 「[: 1: 単項演算子が必要です」というエラーの最も一般的な理由は、シェル スクリプト コードに次のようなものがあることです。
if [ 1 = $MYVAL ]
あなたMYVAL
は設定されていません。補完関数を調べます。追加set -x
してデバッグできます。
通常、最も簡単な解決策は、変数をクォートして、オペレーターが空の引数を取得するようにすることですが、正しい数の引数を持つようにします。
if [ 1 = "$MYVAL" ]