簡體   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