UNIX/Linux环境编程必须需要注意的问题总结

简介:

在UNIX/Linux下编程必须需要注意一下几点问题(特别是在运行于Windows上的IDE或编程工具进行开发):

1.大小写问题。

在文件或目录的命名规则中,特别注意驼峰命名法的大小写区分问题。有些语言的内部变量或者引用方面同样也是。

2.权限问题。

不要任意操作文件系统,换句话说,不要动与自己无关的任何文件(UNIX/Linux下一切都是文件),特别是新部署或者应用中要生成新文件时将权限先查看清楚

3.关于unix文件编码问题的再次强调

在运行于Windows上的IDE或编程工具进行开发时特别注意,保存文件时一定要将dos文件格式(file format)转化成unix文件格式。

dos文件格式中换行符为\r\n

unix文件格式中换行符为\n

现在vim和awk对此有了改进,能自动识别,而grep还不能很好的识别,因此一旦用grep这样的工具就会导致出现未知的后果。

附:针对文件格式做的一些测试:

1
2
3
4
5
6
7
8
9
#!/bin/bash   
#chkconfig: 345 86 14    
#description: Startup and shutdown script for ChatterServer(Port:$SERVICEPORT))    
#SERVICEPORT=29093    
#SERVICEPORT=`grep ^port $(pwd)/../conf/constant.properties | awk -F '=' '{print $2}'`    
PORTFILE=$( pwd )/.. /conf/constant .properties    
#SERVICEPORT=$(cat $PORTFILE | grep ^port | awk -F '=' '{print $2}')    
SERVICEPORT=$( cat  $PORTFILE | dos2unix |  grep  ^port)    
echo  "SUCCESS: ChatterServer(Port:$SERVICEPORT) is OK"

上面的constant.properties文件的fileformat如果为dos,如下图所示:   
2015-07-14_172206

则就会出现

2015-07-14_164347

另一个测试脚本:

1
2
3
4
5
6
7
8
9
10
11
12
cat  >. /portfile <<eof   
port=1080    
eof    
PIDFILE=. /portfile    
cat  $PIDFILE    
#SERVICEPORT=$(grep ^port $PORTFILE | awk -F '=' '{print $2}')    
#grep ^port $PORTFILE | awk -F '=' '{print $2}'    
# VS    
cat  $PIDFILE |  grep  ^port |  awk  -F  '='  '{print $2}'    
SERVICEPORT=$( cat  $PIDFILE |  grep  ^port |  awk  -F  '='  '{print $2}' )    
echo  $SERVICEPORT    
echo  "SUCCESS: ChatterServer(Port:$SERVICEPORT) is OK"

针对上面的文件格式问题,可以用IDE或者文件编辑器来处理,例如下图所示的设置:

image

image

也可以用vim中的:set ff=unix转换,也可以用dos2unix这样的工具转换,如下面的脚本所示:

1
2
3
4
5
# NOTE: $(pwd)/../conf/constant.properties file fileformat must be unix NOT dos in shell scripts, or will cause some unknown error   
# NOTE: grep is vrey sensitive to dos fileformat or unix fileformat    
# apt-get install dos2unix    
PORTFILE=$( pwd )/.. /conf/constant .properties    
SERVICEPORT=$( cat  $PORTFILE | dos2unix |  grep  ^port |  awk  -F  '='  '{print $2}' )

--end--





本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1674199,如需转载请自行联系原作者


相关文章
|
21天前
|
传感器 Linux 开发工具
Linux应用开发基础知识——I2C应用编程(十三)
Linux应用开发基础知识——I2C应用编程(十三)
43 0
Linux应用开发基础知识——I2C应用编程(十三)
|
21天前
|
存储 传感器 Linux
Linux应用开发基础知识——I2C应用编程(十二)
Linux应用开发基础知识——I2C应用编程(十二)
52 0
Linux应用开发基础知识——I2C应用编程(十二)
|
21天前
|
Ubuntu Linux 测试技术
Linux应用开发基础知识——输入系统应用编程(八)
Linux应用开发基础知识——输入系统应用编程(八)
38 0
Linux应用开发基础知识——输入系统应用编程(八)
|
21天前
|
编解码 Ubuntu Linux
Linux应用开发基础知识——Framebuffer 应用编程(四)
Linux应用开发基础知识——Framebuffer 应用编程(四)
26 0
Linux应用开发基础知识——Framebuffer 应用编程(四)
|
21天前
|
Linux 调度 数据库
Linux下的系统编程——线程同步(十三)
Linux下的系统编程——线程同步(十三)
48 0
Linux下的系统编程——线程同步(十三)
|
21天前
|
存储 Linux
Linux下的系统编程——共享存储映射(十)
Linux下的系统编程——共享存储映射(十)
26 1
Linux下的系统编程——共享存储映射(十)
|
1天前
|
缓存 Linux 编译器
Linux环境基础开发工具总结篇
Linux环境基础开发工具总结篇
11 1
|
4天前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
19天前
|
Unix Shell Linux
在Unix/Linux Shell中,管道(`|`)和重定向
在Unix/Linux Shell中,管道(`|`)和重定向
16 1
|
21天前
|
监控 Linux 定位技术
Linux应用开发基础知识——串口应用编程(十一)
Linux应用开发基础知识——串口应用编程(十一)
28 0
Linux应用开发基础知识——串口应用编程(十一)

相关产品

  • 云迁移中心