2016-02-26 154 views
0

我是ksh世界的新手,现在有一个脚本出现问题。根据本行的脚本到用户的在UNIX机器.profile文件,当我尝试连接蒙山他,我总是得到错误ksh语法错误:`if'无与伦比

home/userTest/.profile: syntax error: `if' unmatched

我不知道如何解决这个问题,因为我假设这个脚本定义了连接用户的提示,如果我有这样的错误提示只显示“$”

我试着命令

ksh -n /home/userTest/.profile

,我总是得到错误的最后一行的文件

#!/bin/ksh 
# ksh example 
if [[$0 = "ksh"]]; 
then 
    bash 
    exit $? 
fi 

if [[$0 = "-ksh"]]; 
then 
    bash --login 
    exit $? 
fi 

export LOGIN=$LOGNAME 

#prompt config 
PS1="[email protected]"$(hostname)":$PWD" 

if [["$(id -u)" = "0"]]; 
then 
    export PS1="$PS1# " 
else 
    export PS1="$PS1> " 
fi 

#Alias utile 
alias ll="ls -la" 

#Set any export here 
export PATH_EXAMPLE=/home/userTest 
export JAVA_HOME=$PATH_EXAMPLE/games/java/current 
export PATH=$JAVA_HOME/bin:$PATH 

我该如何解决这个问题?

谢谢。

+0

我没有收到任何错误,因为我已经复制了代码,并且运行了“ksh -n”的检查。 哪ksh你使用ksh88或ksh93 – Ajay

+0

如果使用ksh --version命令我得到“版本sh(AT&T Research)93t + 2010-06-21”,所以我猜我有ksh93 – ibaneight

回答

1

我使用以下版本

version   sh (AT&T Research) 93u+ 2012-08-01 

我没有收到任何语法错误,你上面的代码,但有你的if语句的条件,而不是

if [[$0 = "-ksh"]] 

一个问题应该是

if [[ $0 == "-ksh" ]] 

if [[ $0 = "-ksh" ]] 

后者是过时

的完整源代码如下

#!/bin/ksh 
# ksh example 
if [[ $0 = "ksh" ]]; 
then 
    bash 
exit $? 
fi 

if [[ $0 == "-ksh" ]]; 
then 
    bash --login 
    exit $? 
fi 

export LOGIN=$LOGNAME 

#prompt config 
PS1="[email protected]"$(hostname)":$PWD" 

if [[ "$(id -u)" == "0" ]]; 
then 
export PS1="$PS1# " 
else 
    export PS1="$PS1> " 
fi 

#Alias utile 
alias ll="ls -la" 

#Set any export here 
export PATH_EXAMPLE=/home/userTest 
export JAVA_HOME=$PATH_EXAMPLE/games/java/current 
export PATH=$JAVA_HOME/bin:$PATH 

您的脚本可能会遇到一些不必要的人物,试图寻找出然后使用cat -vte 你也可以尝试命令dos2unix filename然后运行ksh -n

+0

我终于明白了我的问题解决了。我从Windows创建mi .ksh文件,然后将其上传到我的unix机器。当我从unix创建文件时,问题就解决了。谢谢 – ibaneight

+0

如果你已经运行dos2unix文件名...这将解决你的问题....它用unix行结束替换ctrl M字符。 – Ajay