【发布时间】:2017-03-25 07:00:16
【问题描述】:
我有一个 testFile 有两个由管道分隔的参数。
vi testFile
1|A
2|B
3|C
4|D
5|E
我正在创建地图并在 for 循环中运行它,下面正在工作:
while IFS='|' read -r NUM CHAR
do
export MAP[$NUM]=$CHAR
done < testFile
for i in ${!MAP[@]}
do
echo "$i ${MAP[$i]}"
done
但是当我要 ssh 到任何机器并运行循环时,得到
./test.sh[11]: syntax error at line 20: '!' unexpected
下面不工作
ssh someUser@someHost << EOF
for i in ${!MAP[@]}
do
echo "$i ${MAP[$i]}"
done
EOF
如何在 ssh 机器中使用 MAP
注意 testFile 不是固定文件,我是从每次运行时变化的 sql 查询创建此文件。
【问题讨论】:
-
someUser的登录shell是ksh吗? -
@muru: 是的,它的 ksh shell
/usr/bin/ksh -
$ 符号被这里的字符串解释,尝试转义它。