どういうわけか私の下の私のbashスイッチはいつもそうしますfalseを返す/または、リポジトリが存在しない場合のUser / Passシーケンスに関してgitからの応答を抑制するための方法を探していましたが、これでうまくいきませんでしたか?
[ git ls-remote https://github.com/ehime/Bash-Tools.git &>- /dev/null ] && {
echo Exists
} || {
echo Nope
}
私はこれを試してみて、それは動作しますが、私が望んでいたようなコンテンツを抑制しません
[ "$(git ls-remote foo)" ] && { echo Yes; } || { echo No; }
回答:
回答№1は1そのテストではgitを実行していません(testに一連の文字列を与えています) [
エラーメッセージを出力します。
すべての出力を無視してそのコマンドを実行しようとしていて、ブラケットをドロップしたい戻りコードだけをテストする場合 [
そして ]
。彼らはの一部ではありません if
構文。 [
バイナリです(と同義 test
)。
if git ls-remote ...; then
gitを実行して戻りコードをテストします。
さらに、 /dev/null
何もしていません。 $>-
標準入力と標準出力はすでに閉じられています。 /dev/null
に "ref"引数があります git ls-remote
.
回答№2の場合は0
探していたのは
[ "$(git ls-remote $REPOSITORY_URL 2> /dev/null)" ] && { echo Exists; } || { echo Nope; }
誰かがそれを望んでいるなら制限付きgitシェルのための完全なgitコマンド
# If no project name is given
if [ $# -eq 0 ]; then
# Display usage and stop
echo "Usage: addrepo <project.git>" ; exit 1
fi
# Set the project name, adding .git if necessary
project=$(echo "$*" | sed "s/.git$|$/.git/i")
[ "$(git ls-remote $project 2> /dev/null)" ] && {
cd /home/git/repositories/
git clone --mirror "${project}"
} || {
echo "[ERROR] Unable to read from "${project}""; exit 1
}