如何在bash中优雅地存储和回显多行回答不起作用?

问题描述 投票:0回答:2

我尝试了“如何在bash中优雅地存储和回显多条线路”中显示的解决方案?从2010年5月2日开始,基本上是双引号标记字符串变量,因此它识别BLOCK中的多行。如果没有引号,我会将完整的字符串转储转换为单个包装行,就像之前问题中的示例一样。但是当我在“$ VAR”周围添加双引号时,答案说应该有效,我得到的所有内容都是双引号后跟两个问号“??

这是在由.bash_profile调用的.bascrc文件调用的.bash_prompt文件中

所有其他元素,以及许多,由这些文件中的每一个调用都工作正常。这些包括路径,cd,提示,服务器,git位置等元素。我想要添加的是一个多行语句,指导用户他们可能期望的内容以及他们可能需要输入的命令,如果Gitlab存储库由于服务器重启,终端重启等而没有主动连接,因为他们的最后一次使用。

我没有尝试过引号,给出了一个连续的字符串,相当于我想要的五个单独的行,并使用换行终端窗口大小的行转换整个字符串。

我已经删除了前面的双引号,认为它可能在某个地方早些时候被打开了。尝试了删除结尾双引号的另一面。我试过单引号。我想在每行的末尾尝试半列。我尝试用\ n行创建一个String变量并回显字符串。

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 [email protected]
    TO CONNECT TO THE GITLAB REPOSITORY
BLOCK

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  
THEN AWAIT A REPLY OF Identity added:
THEN RUN THE COMMAND ssh -T [email protected]
TO CONNECT TO THE GITLAB REPOSITORY

观察结果:

"??

可能的升级答案:你可能看到我基本上的目标是确保本地机器连接到Gitlab和那里的存储库,以便在开发活动期间如果不存在连接,用户就知道它以及如何重新连接以便它们可以添加和提交任何更新等。这个小代码片段的一部分的提示修改已告诉用户他们在自己的物理机器上的机器名称和缩写的路径位置,并告诉用户他们是什么Git主或分支在片段中第一个声明“等到提示变成颜色”的语句被设置为当连接存在时它就会这样做。我真的想考虑一个逐步终端提示,它将用户和远程机器输入“测试”连接状态是什么,询问用户是否需要,如果没有建立则需要它,然后给出适当的分支操作(包括延迟处理连接速度)。因此,如果某人有更多功能的更精彩的答案,我会全力以赴。 但是现在我很高兴,如果我能让这个消息传递一行一行而不是一个长字符串转储。

bash git gitlab echo multiline
2个回答
2
投票

你是否真的使用“智能”报价?

echo “$tell_user”

Bash不理解他们。而是使用普通的双引号:

echo "$tell_user"

适合我:

$ 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 [email protected] 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 [email protected]
    TO CONNECT TO THE GITLAB REPOSITORY

0
投票

可能是你在BLOCK(“BLOCK”)周围有引号。尝试删除它们

© www.soinside.com 2019 - 2024. All rights reserved.