shell: Ubuntu Shell脚本编码问题

shell scott 225℃ 0评论

今天一同事在写一个数据库备份的shell脚本,在多次确定脚本代码无误的情况下,发现脚本输出的结果死活不正常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* *
 * @author jenkiHuang
 * @email jenkiHuang@qq.com
 * @version 20150407
 * /

#!/bin/bash
DATA_DIR="/home/oracle/bakup/data>"
LOGS_DIR="/home/oracle/bakup/logs>"
DELTIME=`date -d "7 days ago>" +%Y%m%d`
BTM=`date "+%Y%m%d%H%M%S>"`
FILENAME="$DATA_DIR$BTM.dmp>"
echo "Starting bakup...>"
echo $FILENAME

在对文件进行可执行权限设置后,执行脚本时输出

1
2
3
sudo  ./oracleautobk.sh
Starting bakup...
.dmp0407165921akup /data

上面的第二条Echo语句明显不对,无奈在网上各种找资料,最后在Bing(很少用度娘搜索,Google搜索大家都懂的)中找到关于shell脚本编码的问题。原来那同事在编写脚本的时候不是用的vi编辑器直接编写。而是在windows上面用UE编写后,用ftp工具传到linux系统中。那么现在问题来了,在windows系统中编写的shell脚本的默认格式是dos而不是unix,所以造成输出结果不正确。

查看shell脚本的格式,用vi编辑shell脚本。然后输入”:set ff?>”如果输出结束是”fileformat=dos>”,则需要修改文件的格式

1
2
3
// 修改文件格式,用vi打开shell脚本后输入
:set ff=unix
 // 然后保存退出

再次执行脚本文件,可以正确输出年月日格式的文件名

1
2
3
sudo  ./oracleautobk.sh
Starting bakup...
 /home/oracle/bakup/data20150407171543.dmp

所以在这看来,以后编写脚本还是直接在linux系统中使用vi编写更为实在。一来熟练了vi编辑器,二来还可以避免带来不必要的麻烦。

转载: http://www.jenkihuang.com/experience/2015/04/ubuntu-shell-charset.html

原文:http://www.cnblogs.com/jenkiHuang/p/4424965.html

转载请注明:osetc.com » shell: Ubuntu Shell脚本编码问题

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址