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这样的工具就会导致出现未知的后果。

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

#!/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,如下图所示:  

则就会出现

另一个测试脚本:

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这样的工具转换,如下面的脚本所示:

# 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--

时间: 2024-10-26 15:24:09

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

Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

1. openSUSE是一款优秀的linux. 2.选择默认虚拟机 3.选择稍后安装操作系统 4.选择linux  opensuse 5. 选择默认虚拟机名称 6.设置处理器为双核. 7.内存设置为2G 8. 选择网络地址转换 9.设置IO控制器 10. 选择默认磁盘类型 11.创建一个新的虚拟磁盘 12.设置磁盘大小 13.选择路径保存虚拟磁盘 14. 完成虚拟机创建 15.设置虚拟机 16.选择opensuse镜像 17.开启虚拟机 18.虚拟机启动 19.安装opensuse 20.安装程

Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解

?? 上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态. mode有下列几种形态字符串: r 打开只读文件,该文件必须存

Unix/Linux环境C编程入门教程(1) Solaris 11 64bit环境搭建

Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装Solaris 11 64位并且配置好C/C++开发环境 本文所需软件下载地址 33.  F2 开始安装 34.待安装完成 按F8重启 35.重启后的界面  直接回车  启动 36. 登陆切换到我们刚刚创建的用户 待切成功的时候我们就加载合成的镜像文件sol-11_1-repo-full.iso 然后我们切换到root用户 37.先取消掉已连接的状态 38.重新

Unix/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建

Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. Red Hat Enterprise Linux是Red Hat公司的Linux发行版,面向商业市场,包括大型机.红帽公司从Red Hat Enterprise Linux 5开始对企业版LINUX的每个版本提供10年的支持[1].而Red Hat Enterprise Linux常简作RHEL. 1. 启动Vmware,如果没有安装的话,请看前面VMware安装的视频 2.选中

Unix/Linux环境C编程入门教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装

远观历史, MySQL的主要目的是为了能够在单处理器核心的商业服务器上运行.如今MySQL的一个变化用户可能不会注意到,那就是甲骨文已经开始重新架构MySQL的代码,使它大量的模块化.如软件解析器,优化和复制功能以模块化的形式被重写.该版本的查询性能得以大幅提升,比 MySQL 5.6 提升 1 倍,新版本的 MySQL 在测试平台上可达到每秒 512000 只读 QPS,而 MySQL 5.6 最高只能到 250000 QPS.该性能的提升是通过其 Memcached 插件实现的.同时该版本在

Unix/Linux环境C编程入门教程(40) 初识文件操作

?? 1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int close(int fd); 函数说明 当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源.参数fd为先前由open()或creat()所返回的文件描述词. 返回值 若文件顺利关闭则返回0,发生错误时返回-1. 错误代码 EBADF 参数fd

来自Unix/Linux的编程启示录

2017年第一篇文章,祝各位好友新年快乐. 年前由于不小心坐到了自己左手大拇指导致轻微的骨裂,没有按时更新,实在是惭愧.今年给自己订了个小目标,在安顿好新工作后,每周一篇来总结这些年所学. 话不多说,步入正题 写本文的最初灵感源于16年11月份我将工作环境切换到Mac OS上,其中一些使用"差异"让我开始对Unix/Linux中设计产生了浓厚的兴趣. 在整个探究过程中,那些经典的著作再次让我获益匪浅:C和指针,C专家编程,深入理解计算机系统(原书第3版),Linux/Unix设计思想,

Linux环境编程之文件I/O(一):文件描述符

(一) 首先,对于内核来讲,它是利用"文件描述符"来访问文件的.文件描述符一般是一个非负的整数.当我们用open打开已有的文件或者用creat创建新的文件时,都会返回一个文件描述符.有了文件描述符之后,我们就可以利用该文件描述进行文件的读写,即read.write系统调用都需要文件描述符fd(file descriptor)作为其参数.从以上描述可以看出,当我们想要用read.write等系统调用对文件进行读写等操作之前,必须用open或creat系统调用得到文件的描述符. 一般Uni

《unix高级环境编程》终端 I/O——终端 IO 基本概述

终端基本概念 终端 IO 是一种字符型设备,终端特殊设备文件一般有以下几种: 串行端口终端:是使用计算机串行端口连接的设备,计算机把每个串行端口都看作是一个字符设备.串行端口所对应的设备名称 /dev/ttySn(n表示从0开始的整数): 伪终端:是成对的逻辑终端设备,例如 /dev/ptyp3 和/ dev/ttyp3(在设备文件系统中分别是 /dev/pty/m3 和/ dev/pty/s3 ),它们与实际物理设备并不直接相关: 控制终端:是当前进程的控制终端的设备特殊文件 /dev/tty