Bash 将1与星号连在一起表示1 31

Bash 将1与星号连在一起表示1 31,bash,Bash,当我运行以下代码时 for i in {0..9} do OCTET="*$i" echo "i="$i", OCTET=" $OCTET done 我得到以下输出 i=0, OCTET= *0 i=1, OCTET= 1 31 i=2, OCTET= *2 i=3, OCTET= *3 i=4, OCTET= *4 i=5, OCTET= *5 i=6, OCTET= *6 i=7, OCTET= *7 i=8, OCTET= *8 i=9, OCTET= *9 我希望得到

当我运行以下代码时

for i in {0..9}
do
    OCTET="*$i"
    echo "i="$i", OCTET=" $OCTET
done
我得到以下输出

i=0, OCTET= *0
i=1, OCTET= 1 31
i=2, OCTET= *2
i=3, OCTET= *3
i=4, OCTET= *4
i=5, OCTET= *5
i=6, OCTET= *6
i=7, OCTET= *7
i=8, OCTET= *8
i=9, OCTET= *9
我希望得到一份工作

i=1, OCTET= *1

作为输出的第二行。

变量展开式应在双引号内:

for i in {0..9}
do
    OCTET="*$i"
    echo "i=$i, OCTET= $OCTET"
done

除双引号外,
*1
正在全局扩展为当前工作目录中两个文件的名称,
1
31
。其他模式(
*0
*2
*3
,等等)似乎都不匹配任何文件,因此它们按字面显示。

您的变量展开应该在双引号内:

for i in {0..9}
do
    OCTET="*$i"
    echo "i=$i, OCTET= $OCTET"
done

除双引号外,
*1
正在全局扩展为当前工作目录中两个文件的名称,
1
31
。其他模式(
*0
*2
*3
,等等)似乎都不匹配任何文件,因此它们按字面显示。

您的变量展开应该在双引号内:

for i in {0..9}
do
    OCTET="*$i"
    echo "i=$i, OCTET= $OCTET"
done

除双引号外,
*1
正在全局扩展为当前工作目录中两个文件的名称,
1
31
。其他模式(
*0
*2
*3
,等等)似乎都不匹配任何文件,因此它们按字面显示。

您的变量展开应该在双引号内:

for i in {0..9}
do
    OCTET="*$i"
    echo "i=$i, OCTET= $OCTET"
done

除双引号外,
*1
正在全局扩展为当前工作目录中两个文件的名称,
1
31
。其他模式(
*0
*2
*3
等)似乎都不匹配任何文件,因此它们会按字面显示。

当您编写
$OCTET
(不带引号)时,您要求shell尝试将变量的值作为文件名模式进行匹配。因此,如果文件
1
31
存在,则
*1
将替换为该名称列表


如果您不希望发生这种情况(您可能没有),那么应该引用扩展名:
“$OCTET”

当您编写
$OCTET
(不带引号)时,您要求shell尝试将变量的值匹配为文件名模式。因此,如果文件
1
31
存在,则
*1
将替换为该名称列表


如果您不希望发生这种情况(您可能没有),那么应该引用扩展名:
“$OCTET”

当您编写
$OCTET
(不带引号)时,您要求shell尝试将变量的值匹配为文件名模式。因此,如果文件
1
31
存在,则
*1
将替换为该名称列表


如果您不希望发生这种情况(您可能没有),那么应该引用扩展名:
“$OCTET”

当您编写
$OCTET
(不带引号)时,您要求shell尝试将变量的值匹配为文件名模式。因此,如果文件
1
31
存在,则
*1
将替换为该名称列表


如果您不希望发生这种情况(您可能没有),您应该引用扩展名:
“$OCTET”

My bash(msys)给出:
i=1,OCTET=*1
与您的代码。@tinlyx这是因为您的工作目录中没有任何与模式匹配的文件。@TomFenech right。我只是在一个空的家庭行为上测试上述行为。我的bash(msys)给出:
I=1,OCTET=*1
和你的代码。@tinlyx这是因为你的工作目录中没有任何与模式
*1
匹配的文件。@TomFenech right。我只是在一个空的家庭行为上测试上述行为。我的bash(msys)给出:
I=1,OCTET=*1
和你的代码。@tinlyx这是因为你的工作目录中没有任何与模式
*1
匹配的文件。@TomFenech right。我只是在一个空的家庭行为上测试上述行为。我的bash(msys)给出:
I=1,OCTET=*1
和你的代码。@tinlyx这是因为你的工作目录中没有任何与模式
*1
匹配的文件。@TomFenech right。我只是在一个空房子的行为上测试了上述行为。谢谢你的澄清。谢谢你的澄清。谢谢你的澄清。谢谢你的澄清。谢谢你的澄清。