无法在 Linux 上设置带分号的环境变量



我试图在ubuntu:上用分号设置这个环境变量

BS_DATABASE_CONNECTION=连接;数据源=源;初始目录=目录;持久安全信息=信息;用户ID=用户ID;密码=密码;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;

但我得到了这些错误:

数据:未找到命令

初始:未找到命令

Persist:找不到命令

用户:未找到命令

如何正确设置?

问题是;被视为控制运算符,字符串BS_DATABASE_CONNECTION=connection;Data Source=source;...被解释为多个命令。第一个是命令BS_DATABASE_CONNECTION=connection,第二个是命令Data Source=source,等等。一个解决方案是使用引号:

BS_DATABASE_CONNECTION='connection;Data Source=source;Initial Catalog=catalog;Persist Security Info=info;User ID=userid;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;'

但对于这么长的值,做一些类似的事情可能会更可读

BS_DATABASE_CONNECTION="
connection;
Data Source=source;
Initial Catalog=catalog;
Persist Security Info=info;
User ID=userid;
Password=password;
MultipleActiveResultSets=False;
Encrypt=True;
TrustServerCertificate=False;
"

BS_DATABASE_CONNECTION=''
for x in 'connection' 
'Data Source=source' 
'Initial Catalog=catalog' 
'Persist Security Info=info' 
'User ID=userid' 
'Password=password' 
'MultipleActiveResultSets=False' 
'Encrypt=True' 
'TrustServerCertificate=False' 
; do
BS_DATABASE_CONNECTION="${BS_DATABASE_CONNECTION}${x};"
done

read BS_DATABASE_CONNECTION << EOF
connection;
Data Source=source;
Initial Catalog=catalog;
Persist Security Info=info;
User ID=userid;
Password=password;
MultipleActiveResultSets=False;
Encrypt=True;
TrustServerCertificate=False;
EOF

BS_DATABASE_CONNECTION=$( tr \n ; << EOF
connection
Data Source=source
Initial Catalog=catalog
Persist Security Info=info
User ID=userid
Password=password
MultipleActiveResultSets=False
Encrypt=True
TrustServerCertificate=False
EOF
)

请注意,这不是环境变量。它只是一个shell变量。如果你想让它在子shell环境中,你应该导出它。它是否在shell环境中应该完全无关,环境变量和导出的shell变量之间没有功能上的区别。

相关内容

  • 没有找到相关文章

最新更新