Loz*_*b1k 2 linux arrays ssh bash
在远程计算机上,我需要同时获取 2 个数组的值 \xe2\x80\x8b\xe2\x80\x8b 。即,1 和 2 数组的 1 个元素,然后 1 和 2 数组的 2 个元素,依此类推。
\n在编写脚本时,我遇到了一个问题,当我使用变量指定数组索引时,仅显示数组的第一个元素,仅此而已。我尝试转义并像这样写 [$i] 但没有结果。我究竟做错了什么?通过索引访问数组元素的正确方法是什么?
\n我想得到什么:
\narray1=("1" "2")\narray2=("a" "b")\n\nssh $user_srv@$ip_srv -p $port_srv \'bash -s\' << EOF\nfor i in "${!array1[@]}"\ndo\n echo \'${array1[$i]}\'\n echo \'${array2[$i]}\'\ndone\nEOF\nRun Code Online (Sandbox Code Playgroud)\n结果:
\narray1=("1" "2")\narray2=("a" "b")\n\nssh $user_srv@$ip_srv -p $port_srv \'bash -s\' << EOF\nfor i in "${!array1[@]}"\ndo\n echo \'${array1[$i]}\'\n echo \'${array2[$i]}\'\ndone\nEOF\nRun Code Online (Sandbox Code Playgroud)\n
定义要作为本地函数运行的代码;然后使用declare -f序列化该函数,并declare -p序列化它使用的数据,以通过线路传递它们。
array1=("1" "2")
array2=("a" "b")
rmt_func() {
for i in "${!array1[@]}"; do
echo "${array1[$i]}"
echo "${array2[$i]}"
done
}
ssh "$user_srv@$ip_srv" -p "$port_srv" 'bash -s' <<EOF
$(declare -p array1 array2)
$(declare -f rmt_func)
rmt_func
EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |