Saya sedang melakukan beberapa script bash dan sekarang saya mendapat satu panggilan variabel source
dan satu array dipanggil samples
, seperti ini:
source='country'
samples=(US Canada Mexico...)
karena saya ingin memperluas jumlah sumber (dan masing-masing sumber memiliki sampel sendiri) saya mencoba menambahkan beberapa argumen untuk melakukan ini. Saya mencoba ini:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
tetapi ketika saya menjalankan skrip saya source countries.sh country
itu tidak berfungsi. Apa yang saya lakukan salah?
$1="country"
vs.$1 = "country"
Jawaban:
Jangan lupakan spasi:
sumber
samples="US Canada Mexico..."
setelah memperkenalkan pembuatan array sebelumnyasamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Anda dapat menggunakan operator "=" atau "==" untuk perbandingan string dalam bash. Faktor penting adalah jarak dalam kurung. Metode yang tepat adalah agar tanda kurung mengandung spasi di dalam, dan operator mengandung spasi di sekitar. Dalam beberapa kasus kombinasi yang berbeda berfungsi; namun, yang berikut ini dimaksudkan sebagai contoh universal.
Juga, perhatikan kurung ganda ditangani sedikit berbeda dibandingkan dengan kurung tunggal ...
Saya harap itu membantu!
sumber
Tampaknya Anda ingin mengurai argumen baris perintah ke skrip bash Anda. Saya sendiri telah mencari ini. Saya menemukan hal-hal berikut yang menurut saya akan membantu Anda dalam menguraikan argumen:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Saya menambahkan cuplikan di bawah ini sebagai tl; dr
./script.sh -t test -r server -p password -v
sumber