博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNIX/Linux环境编程必须需要注意的问题总结
阅读量:7226 次
发布时间:2019-06-29

本文共 1877 字,大约阅读时间需要 6 分钟。

原创作品,允许转载,转载时请务必以超链接形式标明文章   、作者信息和本声明。否则将追究法律责任。

在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,如下图所示:   

则就会出现

另一个测试脚本:

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或者文件编辑器来处理,例如下图所示的设置:

也可以用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--

本文出自 “” 博客,请务必保留此出处

你可能感兴趣的文章
使用Seam-gen生成基础项目骨架
查看>>
RHCE学习<13>RHCS集群(RHCS+GFS2+ISCSI)
查看>>
Java线程:线程私有变量
查看>>
[Web开发] Web 2.0 网站估价工具
查看>>
IE8 默认以Web Standards模式显示网页 全面遵循Web标准
查看>>
网站Web项目树形菜单的实现过程(ExtJS+SpringMVC+Spring+Hibernate+MySQL)
查看>>
深入浅出Attribute(中)——Attribute本质论
查看>>
Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
查看>>
Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法
查看>>
DeepEarth中的几何图形基础框架模型
查看>>
Enterprise Library Step By Step系列(十):缓冲应用程序块——进阶篇
查看>>
C# 对Excel操作时,单元格值的读取
查看>>
PreparedStatement--摘抄自http://blog.chinaunix.net/u/28512/showart_221625.html
查看>>
网络扫描程序的详细分析与实现
查看>>
SQL2005中时,Diagrams的问题
查看>>
每个分类取最新的几条的SQL实现
查看>>
智慧医疗“验血查癌”或会实现
查看>>
linux中时间精度的获取问题【转】
查看>>
Windows Workflow Foundation学习资源
查看>>
把字符串转化为类型
查看>>