变量未传递给命令

时间:2014-07-02 03:15:45

标签: bash

我想知道为什么变量($HOST$i)没有传递给timeout 1 bash -c 'cat < /dev/null > /dev/tcp/$HOST/$i' && echo $?命令。

#!/bin/bash

HOST=$1

for i in {0..8889}
do
    OPENPORT=$(timeout 1 bash -c 'cat < /dev/null > /dev/tcp/$HOST/$i' && echo $?)
    if [ "$OPENPORT" == 0 ]
    then
        echo -e "Port $i is open on $HOST.\n"
    fi
done

1 个答案:

答案 0 :(得分:2)

因为你的变量是单引号(')。请改用双引号(")。

来自gnu.org

  

用单引号(')括起字符可保留文字   引号内每个字符的值。单引号可能不会   发生在单引号之间,即使前面有反斜杠。