首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在bash answer中优雅地存储和回显多行代码?

如何在bash answer中优雅地存储和回显多行代码?
EN

Stack Overflow用户
提问于 2019-04-23 03:43:21
回答 2查看 181关注 0票数 0

我尝试了“如何在bash中优雅地存储和回显多行?”中展示的解决方案。从2010年5月2日开始,基本上是用双引号标记字符串变量,这样它就可以识别块中的多行。在没有引号的情况下,我将整个字符串转储到单个换行,就像前面问题中的示例一样。但是当我在"$VAR“的两边加上双引号,因为答案是”应该工作“,我得到的结果就是一个双引号,后面跟着两个问号"??”

它位于由.bash_profile调用的.bascrc文件调用的.bash_prompt文件中

这些文件调用的所有其他元素都工作得很好。其中包括路径、cd、提示符、服务器、git位置等元素。我想要添加的是一个多行语句,用于指导用户在Gitlab存储库自上次使用以来由于服务器重启、终端重启等原因而未主动连接时,他们可能需要输入的命令和期望的内容。

我尝试了不加引号,给出了一个连续的字符串,它相当于我想要的五个单独的行,并且用一个终端窗口大小的换行来转储整个字符串。

我删除了前面的双引号,以为它可能在更早的时候就被打开了。An尝试了去掉结尾双引号的另一面。我已经尝试了单引号。我在我想要换行的每一行的末尾尝试了半列。我已经尝试使用\n行创建一个字符串变量并回显字符串。

代码语言:javascript
复制
read -d '' tell_user <<"BLOCK"
    If you are planning to utilize Gitlab.com repository?, wait until prompts 
    turn colors.
    YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s 
    faked) 
    THEN AWAIT A REPLY OF Identity added:
    THEN RUN THE COMMAND ssh -T git@gitlab.com
    TO CONNECT TO THE GITLAB REPOSITORY
BLOCK

echo “$tell_user”

预期结果:

代码语言:javascript
复制
If you are planning to utilize Gitlab.com repository?, wait until prompts turn colors.
YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183  
THEN AWAIT A REPLY OF Identity added:
THEN RUN THE COMMAND ssh -T git@gitlab.com
TO CONNECT TO THE GITLAB REPOSITORY

观察结果:

代码语言:javascript
复制
"??

POSSIBLE STEP UP答案:你可能会看到,我的主要目标是确保本地机器连接到Gitlab和那里的存储库,以便在开发活动期间,如果连接不存在,用户知道它,以及如何重新连接,以便他们可以添加和提交任何更新,等等。提示修改,这一小段代码的一部分,已经告诉用户他们在自己的物理机器上的位置,机器名称和缩写路径位置,还告诉他们正在工作的Git主站或分支。代码片段中的第一个语句是“等待,直到提示符变成颜色”,这样当连接存在时,它就会这样做。我真的很想考虑一种阶梯式终端提示,它让用户和远程机器输入“测试”连接的状态,询问用户是否想要和需要它,如果没有建立连接,然后给出适当的分支操作(包括连接速度的时间延迟处理)。因此,如果有人有更好的答案,有更多的功能,我洗耳恭听。

但就目前而言,如果我能让这条消息逐行显示,而不是一个长字符串转储,我会很高兴。

EN

回答 2

Stack Overflow用户

发布于 2019-04-23 04:35:06

你的文字都使用了“聪明”的引号吗?

代码语言:javascript
复制
echo “$tell_user”

巴什不理解他们。取而代之的是使用普通双引号:

代码语言:javascript
复制
echo "$tell_user"

适用于我:

代码语言:javascript
复制
$ echo $tell_user
If you are planning to utilize Gitlab.com repository?, wait until prompts turn colors. YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s faked) THEN AWAIT A REPLY OF Identity added: THEN RUN THE COMMAND ssh -T git@gitlab.com TO CONNECT TO THE GITLAB REPOSITORY

$ echo "$tell_user"
If you are planning to utilize Gitlab.com repository?, wait until prompts 
    turn colors.
    YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s 
    faked) 
    THEN AWAIT A REPLY OF Identity added:
    THEN RUN THE COMMAND ssh -T git@gitlab.com
    TO CONNECT TO THE GITLAB REPOSITORY
票数 2
EN

Stack Overflow用户

发布于 2019-04-25 04:24:01

可能是你在BLOCK ("BLOCK")的两边有引号。尝试删除它们

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55800179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档