2014-09-01 4 views
0
#!/bin/ksh 
    echo -n "enter the 1 to convert lower to upper or 2 convert upper to lower" 
    read n 
    echo -in_str "Enter the string here" 
    read in_str 
    echo $n 
    echo $in_str 
    if [ $n -eq 1 ] then 
     $ echo $in_str| awk '{print toupper($0)}' 
    elif [ -n -eq 2 ] then 
     $ echo $in_str| awk '{print tolower($0)}' 
    else 
     echo "please select the correct choice" 
    fi 

Получение ошибки: еще неожиданная я не смог запустить выше кодНевозможно запустить сценарий оболочки Unix

+0

Альтернативы для awk являются 'typeset -u in_str' и' tr '[: upper:]' '[: lower:]' ' –

ответ

1

Это:

if [ $n -eq 1 ] then 

должно быть так:

if [ $n -eq 1 ]; then 

Или это:

if [ $n -eq 1 ] 
then 
+0

Спасибо, много ребята, очень новы для сценариев unix shell –

+0

Предполагая, что' $ n' является не пустой (или нулевой, но нормальный не после чтения). Если бы это не было $ $ (n: -9} ", чтобы назначить (если пустое/пустое) значение 9, то можно использовать' -eq' – NeronLeVelu

0
$ echo $in_str| awk '{print toupper($0)}' 

???

Я не думаю, что вы хотите, чтобы $ персонаж в передней части этой линии (или другой echo).

Кроме того, если вы хотите then на той же линии, что и if, он должен быть:

if [ $n -eq 1 ] ; then 
1

Вам нужно точкой с запятой (ы) перед then .И у вас есть дополнительные $ символов. Я думаю, что вы хотели чего-то вроде этого

if [ $n -eq 1 ]; then 
    echo $in_str| awk '{print toupper($0)}' 
elif [ $n -eq 2 ]; then 
    echo $in_str| awk '{print tolower($0)}' 
else 
    echo "please select the correct choice" 
fi 

По крайней мере, он работает здесь.

+0

Фактически, я уверен, что вам нужно 'then' на' elif' также. – paxdiablo

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