2014-09-01 140 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 Shell腳本

+0

awk的替代方法是'typeset -u in_str'和'tr'[:upper:]''[:lower:]'' – 2014-09-08 07:24:53

回答

1

此:

if [ $n -eq 1 ] then 

需求是這樣的:

if [ $n -eq 1 ]; then 

或者這個:

if [ $n -eq 1 ] 
then 
+0

非常感謝很多人對於unix shell腳本很陌生 – 2014-09-01 07:05:38

+0

假設'$ n'是不是空白的(或者是空的,但通常不在讀取之後)。如果不是,可以用'$ {n:-9}'來分配(如果爲空/空)到9,所以可以使用'-eq' – NeronLeVelu 2014-09-03 10:49:55

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

???

我不認爲你想在該行的前面輸入$字符(或其他echo行)。

另外,如果你想在同一行then爲您if,它應該是:

if [ $n -eq 1 ] ; then 
1

then之前需要分號(S)。而你有額外的$符號。我想你想要這樣的東西

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'以及。 – paxdiablo 2014-09-01 06:53:17