我尝试了“如何在bash中优雅地存储和回显多行代码”中显示的解决方案?从2010年5月2日开始,基本上是用双引号标记字符串变量,以便它可以识别BLOCK中的多行。没有引号,我将完整的字符串转储到单个换行中,就像前面的问题中的示例一样。但是,当我按照答案所说的应该在“ $ VAR”周围加上双引号时,我得到的全部是双引号和两个问号“ ??
这位于.bash_prompt文件中,该文件由.bash_profile调用的.bascrc文件调用
所有其他元素,还有很多,这些文件中的每一个都可以正常工作。这些包括路径,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 git@gitlab.com
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 git@gitlab.com
TO CONNECT TO THE GITLAB REPOSITORY
观察结果:
"??
可能的提高答案:
您可能会看到,我的主要目的是确保将本地计算机连接到Gitlab,并将存储库连接到那里,以便在开发活动中,如果不存在连接,用户将知道连接的方式以及如何重新连接,以便他们可以添加和提交任何更新等等,这小段代码是其中一部分的即时修改已经告诉用户他们在其自己的物理机器上的位置,并且具有计算机名称和缩写的路径位置,还告诉了他们正在使用的Git主节点或分支。该代码段中的第一个语句是“等待直到提示变成彩色”,以便在存在连接时执行此操作。我真的很想考虑一个逐步的终端提示,该提示将用户和远程机器的输入用于“测试”连接的状态,询问用户是否需要并是否需要建立连接,然后进行适当的分支操作(包括连接速度的延时处理)。因此,如果有人对功能更多有更出色的回答,我会很高兴。
但是现在,如果我能使此消息传递到每一行而不是一个长字符串转储中,我会很高兴。
答案 0 :(得分: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 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
答案 1 :(得分:0)
可能是您在BLOCK(“ BLOCK”)周围加了引号。尝试删除它们