我有一个像:
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'调用,然后循环退出,不知道发生了什么?
答案 0 :(得分:2)
ssh user@host2 <<EOF
IFS=$','
RTOPICS='$TOPICS'
for word in \$RTOPICS; do
$PATH_TO_SCRIPT \$word
done
exit
EOF
您需要在远程系统上进行变量扩展,以便使用IFS来分割单词。
答案 1 :(得分: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。