[英]Problems with space character in Bash cut command when using a different delimiter
[英]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
分別作為sh
或ksh
調用時嘗試模擬sh
或ksh
從man bash
:
如果使用名稱
sh
調用bash
,則它會嘗試盡可能接近於sh的歷史版本的啟動行為,同時也要符合POSIX標准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.