unix ksh присваивает переменной два значения - PullRequest
0 голосов
/ 18 апреля 2011

#!ksh Я хотел сделать что-то странное, но Unix не позволяет мне ... Пожалуйста, посмотрите и пример:

#assign multiple values to a variable so if the user type 
#upper case or lower case it will be ok

var=aa1|AA1|aA1  

#then I want to use the variable in a guess script

Мне нужно использовать переменную в других функциях, поэтому я не могу использоватьслучаи Кто-нибудь может помочь?Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

| символ - это труба, которая имеет особое значение в KSH.

Оберните всю строку в одинарные кавычки, и все будет в порядке.

var = 'aa1 | AA1 | aA1'

Хотя, если вы сравниваете что-то вроде egrep позже, вы можете просто передать его '-i', и оно станет нечувствительным к регистру, или принять ввод от пользователя и пропустить его через 'tr', чтобы все заглавные или строчные так что вы знаете, что это будет.

Множество простых способов снять кожу с кошки.

1 голос
/ 18 апреля 2011

Вы можете объявить переменную в нижнем регистре, прежде чем запрашивать у пользователя значение:

$ typeset -l x
$ read x
HELLO WORLD
$ echo "$x"
hello world

Другой сценарий, чтобы соответствовать тому, что вы делаете:

$ answer="hello world"
$ typeset -l response
$ read response
HELLO WORLD
$ if [ "$answer" = "$response" ]; then echo "Correct!"; fi
Correct!
...