Shell - Tips

01 - 05

01 - Shell编程基础命令

02 - Shell编程小抄

03 - Shell编程技巧

04 - Shell编程陷阱

05 - Shell编程正则表达式

06 - 10

06 - Shell的参考手册

07 - 删除文本文件或字符串中的“\r”字符

1-问题现象
解析文本文件最后一列内容,然后赋值给变量,发现变量值的内容发生改变,值的结尾多了“\r”字符。
例如,本应为test=123456789,实际得到test=$'123456789\r'。

2-问题原因
与文本文件格式有关,Unix体系里,每行结尾只有“<换行>”,即“\n”;Windows体系里面,每行结尾是“<换行><回车>”,即“\n\r”。
在Unix下,利用“cat -A <filename>”命令查看所有字符,“\n”实际显示为“$”,“\n\r”实际显示为“^M$”
在Windows下,利用notepad++编辑器查看所有字符,“\n”实际显示为“LF”,“\n\r”实际显示为“CRLF”

3-处理方法
- 方法1:利用“dos2unix”命令对文本文件进行格式转换
- 方法2:利用`tr -d ‘\r’`命令删除字符串中的“\r”字符

08 - 逐行读取文件的方法

方法1:

    cat $fileName | while read line  
    do  
      [statements]  
    done  

方法2:

    for line in `cat $fileName`  
    do  
      [statements]  
    done  

方法3:

    while read line  
    do  
      [statements]  
    done < $fileName 

参考:逐行读取的方法

09 - 写好shell脚本的13个技巧

原文链接

- 提供--help标记
- 检查所有命令的可用性
- 独立于当前工作目录
- 如何读取输入:环境变量 vs. 标记
- 打印对系统执行的所有操作
- 如果有必要,提供--silent选项
- 重新开启显示
- 用动画的方式显示进度
- 用颜色编码输出
- 出现错误立即退出脚本
- 自己执行清理工作
- 在退出时使用不同的错误码
- 在结束时打印一个新行

10 - Shell练习

11 - 15

11 - Shell思维导图

12 - 命令行的艺术(the-art-of-command-line)

13 - Linux 命令行 Bash 的基本用法和脚本编程

14 - 临时文件

15 - 命令行通配符

16 - 20

16 - Shell 简明开发规范

17 - expect语句报错“spawn id exp6 not open”

理解“exp_continue”的作用
将如下语句

    expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$PASSWORD\n";exp_continue }
        "Password" { send "$PASSWORD\n" }
    }

修改为

    expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$PASSWORD\n" }
        "Password" { send "$PASSWORD\n" }
    }

参考信息

18 -

posted @ 2017-09-07 22:58  Anliven  阅读(343)  评论(0编辑  收藏  举报