iba*_*ght 1 syntax ksh syntax-error
我是 ksh 世界的新手,我现在有一个脚本问题。此行下的脚本位于 UNIX 机器中用户的 .profile 文件中,当我尝试与他连接时,总是出现错误
home/userTest/.profile: 语法错误:`if' 不匹配
我不知道如何解决这个问题,因为我想这个脚本定义了连接用户的提示,如果我有这个错误提示只显示“$”
我试过命令
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="$LOGIN@"$(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
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题 ?
谢谢。
我有同样的错误。原来这是由于我在 Windows 中创建的 *.sh 文件中的 DOS 格式换行符(CR-LF),然后传输到 Linux 服务器。
在Windows中:使用记事本++,如解释在这里:
- 从“编辑”菜单中,选择“EOL 转换”->“UNIX/OSX 格式”。
- 您还可以通过“设置”->“首选项”->“新建文档/默认目录”在notepad++中设置默认EOL,然后在格式框下选择“Unix/OSX”。
在 UNIX/Linux 中:使用此处解释的技术之一:
- 使用以下
sed命令将 DOS 转换为 UNIX :
sed 's/^M$//' input.txt > output.txt
- 使用以下
tr命令将 DOS 转换为 UNIX :
tr -d '\r' < input.file > output.file
- 使用这个 Perl one-liner 将 DOS 转换为 UNIX:
perl -pi -e 's/\r\n/\n/g' input.file
- 使用以下
dos2unix命令将 DOS 转换为 UNIX :
dos2unix myfile.txt或dos2unix -b myfile.txt(有备份)
- 使用
unix2dos命令将 UNIX 转换为 DOS :
unix2dos myfile.txt或unix2dos -b myfile.txt(有备份)
- 使用
sed命令将 UNIX 转换为 DOS :
sed 's/$'"/`echo \\\n\\\r`/" input.txt > output.txt(你需要那些\\\,你需要)
| 归档时间: |
|
| 查看次数: |
11227 次 |
| 最近记录: |