繁体   English   中英

使用换行符分隔符时,Bash会去除“ N”字符

[英]Bash strips “N” character when using newline-delimiter

我正在使用Windows Linux子系统(Ubuntu)。 当我尝试设置换行符时,我丢失了'n'个字符。 我的简化脚本;

#!/bin/sh
echo $HOME #gives /home/hennio
IFS=$'\n'
echo $HOME #gives /home/he  io

IFS=$'\\n\\b'不能解决问题。 我用$(with sh)检查了我的shebang,它是正确的(尽管使用zsh)。

在互联网上搜索没有得到任何结果。 有人可以告诉我发生了什么吗? 它让我发疯..

为了保持兼容性,以/bin/sh调用的shell通常会尝试模仿POSIX shell或Bourne shell的某些变体。 POSIX和Bourne都不支持$'...' 有两种可能的解决方案:

方法1:使用支持$'...'的shell(例如bash的shebang。

要么,

方法2:使用POSIX方法向IFS分配换行符:

IFS='
'

(帽子提示: 戈登·戴维森

文档

来自man zsh

Zsh分别作为shksh调用时尝试模拟shksh

man bash

如果使用名称sh调用bash ,则它会尝试尽可能接近于sh的历史版本的启动行为,同时也要符合POSIX标准。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM