2016-10-12 5 views
1

Я написал сценарий оболочки (beginner), который отлично работает, но включает в себя ряд параметров.Назначение переменных лучше подходит

Я присваиваю им значение, как показано ниже.

url=$2 
name=$3 
ipadd=$5 
netmask=$6 
vlanid=$4 
vlname=$7 

Есть ли какой-нибудь лучший подход, я могу использовать?

Спасибо.

+0

Это прекрасно; это прямо, очевидно, что он делает, и это уже не так, как должно быть. – chepner

+0

Вы можете поместить несколько назначений на одну строку, если это вас беспокоит. – chepner

+0

Смотрите: http://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash/14203146#14203146 ​​ – agc

ответ

0

Вы можете использовать read вместо нескольких заданий:

f=$'\6' # or any other control character 
IFS=$f read -d'' -r _ url name vlanid ipadd netmask vlname _ < <(printf "%s$f" "[email protected]") 

_ будет игнорировать $1 и ничего после $8.

+0

Если мне нужно присвоить одно значение двум переменным – Sherry

+0

предположим, что $ 2 для vlanid и x? – Sherry

+0

'x =" $ vlanid "' должно быть выполнено после 'read' – anubhava

0

Единственный способ, с помощью которого я мог бы сделать работу лучше, - это изменить настройку -flag = value, если бы не сделать так, чтобы порядок аргументов был важен.

./myscript.sh --url = http://www.example.com --ip = 10.42.56.23 --netmask = 24

Это потребовало бы разбора каждого аргумента для --flag части, а затем, если оно найдено расщепление переменная в = и установка значения вашего реального внутреннего значения. Стоит это для чего-то, что вы отправляете пользователям, но, возможно, не столько для того, что вы используете для себя.

Смежные вопросы