bash - 无法访问 bash 脚本函数中的配置文件变量
问题描述
我有一个配置和一个主要的 bash 脚本文件。配置文件具有分配了值的变量,而主文件想要访问它们。以下是我的文件,
配置文件
#!/bin/bash
username=abc
password=abc
hosts=(192.168.110.164);
walletname=varsh
主文件
#!/bin/bash
source ~/shell/config.sh
echo "$username"
echo "$walletname"
start_block(){
echo "$username"
echo "$walletname"
}
SCRIPT="$(declare -f); start_block"
for i in ${!hosts[*]} ; do
printf "\t=========== Logging in ${hosts[i]} ===========\n\n"
SCR=${SCRIPT/PASSWORD/${password}}
sshpass -p ${password} ssh -l ${username} ${hosts[i]} "${SCR}"
done
$username
并且$walletname
可以从start_block
函数外部访问,但不能从函数内部访问。函数的回显start_block
给出空结果。我尝试export
在配置中使用 before 变量名。如何访问这些变量?
编辑:
我想使用用户名密码登录到另一台主机,创建一些文件,使用配置文件变量运行安装和其他命令。配置中可能有很多变量。
解决方案
您的变量不会发送到远程主机。您可以强制内联它们,就像您执行以下功能一样:
SCRIPT="$(env) ; $(declare -f) ; start_block"
但是,我建议直接内联配置:
SCRIPT="$(cat ~/shell/config.sh) ; $(declare -f); start_block"
推荐阅读
- javascript - 每个项目的 react-native start 都失败
- angular - 使用各种测试数据进行角度单元测试
- python - 置换字符串中的字符
- c# - Simple.OData.Client 不返回结果,没有错误
- c# - IRabbitMqHost autofac注册问题
- python - 'Tensor' 对象不支持项目分配,而需要在张量数组中切片然后进行分配
- javascript - 将 JSON 对象子项附加到每个 div 元素中
- php - XDebug 永远无法识别 vscode 中 php 文件中的停止
- python - 如何让漂亮的汤只抓取网页中一组“[:”“:]”之间的内容?
- python-2.x - 将文件从 POST 请求保存到磁盘,而不使用 Python 的 BaseHTTPServer 存储在内存中