Я делаю некоторый сценарий bash, и теперь я получил один вызов переменной source
и один вызванный массив samples
, например:
source='country'
samples=(US Canada Mexico...)
поскольку я хочу расширить количество источников (и каждый источник имеет свои собственные образцы), я попытался добавить некоторые аргументы для этого. Я попробовал это:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
но когда я запустил свой сценарий, source countries.sh country
он не работал. Что я делаю не так?
$1="country"
против$1 = "country"
Ответы:
Не забывайте про пробелы:
источник
samples="US Canada Mexico..."
после введения создания массива раньшеsamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Вы можете использовать операторы "=" или "==" для сравнения строк в bash. Важным фактором является расстояние в скобках. Правильный метод заключается в том, чтобы в скобках содержался интервал, а в операторах - интервал. В некоторых случаях работают разные комбинации; тем не менее, следующее предназначено для универсального примера.
Кроме того, обратите внимание, что двойные скобки обрабатываются немного по-другому по сравнению с одиночными скобками ...
Надеюсь, это поможет!
источник
Похоже, что вы хотите проанализировать аргументы командной строки в вашем bash-скрипте. Я искал это недавно сам. Я наткнулся на следующее, которое, я думаю, поможет вам в анализе аргументов:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Я добавил фрагмент ниже как tl; dr
./script.sh -t test -r сервер -p пароль -v
источник