如何解决如何在单个 bash 变量中使用多个主机名?
单机工作脚本
我在 .bashrc 中获取了以下 bash 脚本,并且在使用单个主机名 host1 时工作正常。 我可以毫无问题地执行 scp、rsync 和其他远程命令。 但我想将它用于多个主机名,例如。主机 1、主机 2、主机 3。
HPC_HOST=${HPC_HOST:-host1}
lastarg() {
# get the last argument
for last; do true; done; echo $last;
}
hpc() {
HERE="~${PWD#$HOME}"
ssh -t $HPC_HOST "cd $HERE; bash";
}
scp_to_hpc() {
# Usage: scp_to_hpc files
# Purpose: will copy file to crysden:$(pwd)/file
#hpc_mkcwd
HERE="~${PWD#$HOME}"
scp $@ $HPC_HOST:$HERE
}
当前解决方案
目前我创建了相同脚本的三个副本,并根据主机名相应地修改了函数名称。
预期的解决方案
我希望必须有一种方法可以在上述脚本中调用多个主机名。 并使用 anyhost 执行命令。(可能我们还需要为主机名定义函数变量。
我也很欣赏在上述 bash 脚本中使用多个主机的可能想法。
解决方法
你可以在 bash 中使用字典,有多个键并设置值,当你想使用特定的键时,你可以检索它。
创建字典
declare -A test_var
添加不带引号的键/值字符串文字
test_var[key1]=value1
添加带引号的键/值字符串文字
test_var['key2']='value2'
使用 bash 变量添加键/值对
another_key_var='key3'
another_value_var='value3'
test_var[$another_key_var]=$another_value_var
在bash中检索键值对
echo ${test_var[key1]}
echo ${test_var[key2]}
echo ${test_var[$another_key_var]}
在 Bash 中更新字典中的现有键值 `test_var[key1]='another_value1'
在 Bash 中检查字典中是否存在键
if [ -v test_var[key1] ]; then
echo "key1 exists in a dictionary"
fi
if [ ! -v test_var[key2] ]; then
echo "key2 does not exists in a dictionary"
fi
从 Bash 字典中删除键值对
unset test_var[key1]
unset test_var['key2']
unset test_var[$another_key_var]
在 Bash 中迭代字典
for key in "${!test_var[@]}"; do
echo "$key ${test_var[$key]}"
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。