栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

试图将换行符嵌入bash中的变量中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

试图将换行符嵌入bash中的变量中

摘要

  1. 插入

    n

    p="${var1}n${var2}"

    echo -e “${p}”

  2. 在源代码中插入新行

    p="${var1}

    ${var2}”
    echo “${p}”

  3. 使用

    $'n'
    (仅bash和zsh)

    p="${var1}"$'n'"${var2}"

    echo “${p}”

细节

1.插入
n

p="${var1}n${var2}"echo -e "${p}"

echo -e
将两个字符解释
"n"
为换行符。

var="a b c"first_loop=truefor i in $vardo   p="$pn$i" # Append   unset first_loopdoneecho -e "$p"  # Use -e

避免多余的换行符

var="a b c"first_loop=1for i in $vardo   (( $first_loop )) &&  # "((...))" is bash specific   p="$i" ||  # First -> Set   p="$pn$i" # After -> Append   unset first_loopdoneecho -e "$p"  # Use -e

使用功能

embed_newline(){   local p="$1"   shift   for i in "$@"   do      p="$pn$i"         # Append   done   echo -e "$p"          # Use -e}var="a b c"p=$( embed_newline $var )  # Do not use double quotes "$var"echo "$p"

2.在源代码中插入新行

var="a b c"for i in $vardo   p="$p$i"       # New line directly in the source predoneecho "$p" # Double quotes required          # But -e not required

避免多余的换行符

var="a b c"first_loop=1for i in $vardo   (( $first_loop )) &&  # "((...))" is bash specific   p="$i" ||  # First -> Set   p="$p$i"# After -> Append   unset first_loopdoneecho "$p"     # No need -e

使用功能

embed_newline(){   local p="$1"   shift   for i in "$@"   do      p="$p$i"# Append   done   echo "$p"  # No need -e}var="a b c"p=$( embed_newline $var )  # Do not use double quotes "$var"echo "$p"

3.使用
$'n'
(便携式性较低)

bash和zsh解释

$'n'
为换行符。

var="a b c"for i in $vardo   p="$p"$'n'"$i"doneecho "$p" # Double quotes required          # But -e not required

避免多余的换行符

var="a b c"first_loop=1for i in $vardo   (( $first_loop )) &&  # "((...))" is bash specific   p="$i" ||  # First -> Set   p="$p"$'n'"$i"       # After -> Append   unset first_loopdoneecho "$p"     # No need -e

使用功能

embed_newline(){   local p="$1"   shift   for i in "$@"   do      p="$p"$'n'"$i"    # Append   done   echo "$p"  # No need -e}var="a b c"p=$( embed_newline $var )  # Do not use double quotes "$var"echo "$p"

所有输出都相同

abc

特别感谢以下答案的贡献者:kevinf,GordonDavisson,l0b0,Dolda2000和Tripleee。


编辑

  • 另请参见BinaryZebra的答案,其中提供了许多详细信息。
  • Abhijeet Rastogi的答案和Dimitry的答案说明了如何避免
    for
    上述bash片段中的循环。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号