为了切入正题,以下内容(源自Charles Duffy对相关问题的回复 - 请参阅他的回答)将是我要求的可接受格式:
eval "$(
{ sed -E -e 's/^[ ]+//;' -e ':a;N;$!ba;s/\n//g' | tr -d '\n'; } <<'____COMMAND'
sshfs
foo_user@fooserver.com:/sftp_folder
/var/sshfs.sandbox/server.com
-o
user=foo_user
,reconnect
,ServerAliveInterval=15
,ServerAliveCountMax=3
____COMMAND
)"
请注意,每当我试图拆分为多行的命令需要它时,都会有一个尾随空格:
sshfs
foo_user@fooserver.com:/sftp_folder
/var/sshfs.sandbox/server.com
-o
并且对于必须在没有中间空格的情况下连接的选项没有尾随空格:
user=foo_user
,reconnect
,ServerAliveInterval=15
,ServerAliveCountMax=3
连接后,命令变为:
sshfs foo_user@fooserver.com:/sftp_folder /var/sshfs.sandbox/server.com -o user=foo_user,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
但是,有人告诉我尾随空格是个坏主意(再次,请参阅Charles Duffy的回复以了解动机)
因此我想知道。有没有办法实现这三个:
- 将声明全部“放在一起”。
- 没有尾随空格。
- 使“页眉”和“页脚”固定并在其他脚本中复制粘贴而无需修改。
我正在考虑使用尾部反斜杠并修改解析表达式:
{ sed -E -e 's/^[ ]+//;' -e ':a;N;$!ba;s/\n//g' | tr -d '\n'; }
这样我就可以实现上述所有三个。