搜索
linux - 一个shell的基础编程问题
黄舟
黄舟 2017-04-17 13:08:11
[Linux讨论组]

如下的代码:

shellIFS=:
IFS=$'\n'
IFS=$'\n;='

给IFS赋值,为什么第2,3行要用到$号,为什么第一行不用,$号有什么作用吗?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
怪我咯

Words of the form $aqstringaq are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:

\a
    alert (bell) 
\b
    backspace 
\e
    an escape character 
\f
    form feed 
\n
    new line 
\r
    carriage return 
\t
    horizontal tab 
\v
    vertical tab 
\\
    backslash 
\aq
    single quote 
\nnn
    the eight-bit character whose value is the octal value nnn (one to three digits) 
\xHH
    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) 
\cx
    a control-x character
高洛峰

shell小白一只,简单test了一下:

  #! /bin/bash
  IFS=:
  echo "$IFS"
  IFS='\n'
  echo "$IFS"
  IFS=$'\n'
  echo "$IFS"
  IFS=$'\n;='
  echo "$IFS"

Shell script的输出是:

:
\n


;=

具体$和不加$造成上述输出的原理我也不清楚,求其他大神解答~

黄舟

加$符号将现执行'\n'转义,既将单引号''内的\n转为换行.而$则是获取这个转义后的结果,既为一个空行.
如果不使用$的话,eho "$IFS"将打印原始字符,因为"'\n'"中的'\n'被视作一个普通字符串.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号