0

我有一个像这样的变量:

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' 调用,然后循环退出,知道发生了什么吗?

4

2 回答 2

2
ssh user@host2 <<EOF
 IFS=$','
 RTOPICS='$TOPICS'
 for word in \$RTOPICS; do
  $PATH_TO_SCRIPT \$word
 done
exit
EOF

您需要在远程系统上进行变量扩展,以便使用 IFS 来拆分单词。

于 2013-06-21T16:10:50.653 回答
0

由于您在本地机器上有变量(这是我从问题中假设的),所以在本地机器上进行扩展:

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。

于 2013-06-21T18:04:12.843 回答