我试图在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变量之间没有功能上的区别。