cut在脚本中的行为与在命令行中的行为不同

时间:2019-12-06 19:01:09

标签: bash git-bash cut

我有一个名为test.sh的bash脚本,其中变量range在循环中具有类似1000 1999的值。如果我在循环中echo "$range"并将输出通过管道传递到cut,它的行为将达到我的预期:

$ sh test.sh | cut -d ' ' -f 1
1000
2000
3000
4000

但是,如果我尝试在脚本中执行相同的操作,cut不会被剪切:

min=$(echo "$range" | cut -d ' ' -f 1);
echo "$min";
$ sh test.sh
1000 1999
2000 2999
3000 3999
4000 4999

为什么min包含1000 1999而不是1000?万一重要,在Windows 10上的git bash中。

为回应评论,这是declare -p range的输出:

$ bash test.sh
declare -- range="1000
1999"
declare -- range="2000
2999"
declare -- range="3000
3999"
declare -- range="4000
4999"

我不确定这是什么意思。我确信这些空格确实是空格,因为当我将echo "$range"的输出重定向到文件并在十六进制编辑器中对其进行检查时,这就是我看到的。但是现在我对此表示怀疑。因此,由于现在似乎很相关,因此range的分配方式如下,其中dir包含类似X1000-X1999的内容:

range=$(echo "$dir" | grep -o -E '[0-9]+');

0 个答案:

没有答案