Menggunakan bash, saya ingin memeriksa apakah Alat Baris Perintah diinstal.
Saat ini mereka dan ketika saya mengetik xcode-select --install
saya mendapatkan:
xcode-select: error: alat-alat baris perintah sudah diinstal, gunakan "Pembaruan Perangkat Lunak" untuk menginstal pembaruan Tampaknya Homebrew sudah diinstal. Jika niat Anda adalah menginstal ulang, Anda harus melakukan ... bla bla bla
Pada dasarnya masalah saya adalah bahwa saya memiliki beberapa metode untuk check in bash (menggunakan if / fi
) tetapi saya tidak tahu solusi mana yang terbaik.
1) Saya bisa lakukan xcode-select -p
dan itu mengembalikan jalur /Library/Developer/CommandLineTools
tetapi kemudian bagaimana saya harus membangun if
pernyataan? Saya tidak tahu apa yang akan disajikan ketika CLT tidak diinstal.
2) Saya bisa melakukannya xcode-select --version
. Haruskah saya grep
karena frase version
sejak saya dapatkan
xcode-pilih versi 2343.
3) Saya dapat melakukan which xcode-select
tetapi sekali lagi, dalam semua kasus saya tidak yakin bagaimana if
seharusnya. Saya juga berpikir itu grep
bukan cara terbaik, karena di masa depan output mungkin berbeda di versi OSX di masa depan.
Singkatnya saya ingin sesuatu seperti
#!/bin/bash
if [ no idea ]; then
#installed, nothing to do...
else
xcode-select --install
fi
Terima kasih atas sarannya.
-x
. Daniel terima kasih. Saya melihat bahwa mengganti-print-path
dengan hanya-p
berfungsi juga.type xcode-select
dan a-d
bisa diperlukan.if [ -d "$(xcode-select -p)" ]; then
Xcode
pemasangan yang benar.${xpath}
boleh dua kali dikutip untuk mencegah globbing dan pemisahan kata? Juga, mengapa Anda menempatkan ruangxcode-select --print-path
di sekitar$( xcode-select --print-path )
? Tidak perlu dan harus hanya:$(xcode-select --print-path)
Hanya karena pemilihan kode mengembalikan jalur yang valid tidak berarti alat baris perintah diinstal:
Dengan demikian, pemeriksaan yang lebih akurat adalah dengan menggunakan xcode-select untuk mencoba dan menginstal CLT dengan yang berikut:
Jika tidak diinstal, itu akan meminta instalasi seperti yang ditunjukkan contoh Anda, tetapi tanpa baris terpisah untuk
xcode-select --install
.sumber
xcode-select --install
diikuti dengan perpindahanXcode
jalur terdaftarxcode-select --switch /tmp
?xcode-select --install 2>&1
menghasilkan stderr :,xcode-select: error: command line tools are already installed, use "Software Update" to install updates
tetapi Anda tidak ingin menekannya untuk kasing yang tidak terpasang. Saya bingung.Namun pendekatan lain akan digunakan
pkgutil
sumber
Homebrew/os/mac/xcode.rb
sepertinya menggunakan jenis pendekatan ini. Melihat homebrew menarik bagi saya karena saya dapat melihat evolusi integrasi CLT di MacOS.