我有一个像这样的变量:
TOPICS=A,B,C,D
还有一个 bash 脚本可以像这样读取它们:
ssh user@host2 <<EOF
IFS=$','
for word in $TOPICS; do
$PATH_TO_SCRIPT \$word
done
exit
EOF
但是 $PATH 的脚本只被 TOPIC 'A' 调用,然后循环退出,知道发生了什么吗?
ssh user@host2 <<EOF
IFS=$','
RTOPICS='$TOPICS'
for word in \$RTOPICS; do
$PATH_TO_SCRIPT \$word
done
exit
EOF
您需要在远程系统上进行变量扩展,以便使用 IFS 来拆分单词。
由于您在本地机器上有变量(这是我从问题中假设的),所以在本地机器上进行扩展:
TOPICS=A,B,C,D
IFS=, read -ra topic_words <<< "$TOPICS"
ssh user@host2 <<EOF
for word in ${topic_words[*]}; do
$PATH_TO_SCRIPT \$word
done
exit
EOF
如果 $TOPICS 中有空格,这将中断。如果是这样的话,那么:
TOPICS="A a,B b,C c,D d"
ssh user@host2 <<EOF
IFS=, read -ra topic_words <<< "$TOPICS"
for word in "\${topic_words[@]}"; do
$PATH_TO_SCRIPT "\$word"
done
exit
EOF
我假设您在远程端的登录 shell 是 bash。