Bash Unix脚本:日期输出和换行符(\n)不起作用

Bash Unix脚本:日期输出和换行符(\n)不起作用,bash,shell,unix,Bash,Shell,Unix,我有两个问题 每当我运行下面的代码时,它都会将第二个日期返回到20、30、40、50等等 “\n”对我的代码不起作用,我不知道为什么,我尝试了一些测试,但对于日期的代码,不会转到下一个(已回答) 代码如下: #!/bin/bash echo "Testing Data entry for the 1st 7 days of the month" min=01 max=7 while [ $min -lt 8 ]; do echo -e "\n `date +"$min"%m%Y` $m

我有两个问题

  • 每当我运行下面的代码时,它都会将第二个日期返回到20、30、40、50等等
  • “\n”对我的代码不起作用,我不知道为什么,我尝试了一些测试,但对于日期的代码,不会转到下一个(已回答)
  • 代码如下:

    #!/bin/bash
    
    echo "Testing Data entry for the 1st 7 days of the month"
    min=01
    max=7
    
    while [ $min -lt 8 ]; do
    
      echo -e "\n `date +"$min"%m%Y` $min \n" >> test.txt
    
      let min=min+1
    done
    
    
    min=`date +%d -d "-1 month -$(($(date +%-d)-1)) day"`
    
    cat test.txt

    echo -e "Testing\nNewline"
    echo -n > test.txt
    
    我的预期结果应该是: 01032014 1 02032014 2 03032014 3 04032014 4 05032014 5 06032014 6 2014年3月7日

    但结果是: 01032014 1 2032014 2 3032014 3 4032014 4 5032014 5 6032014 6
    7032014 7

    尝试使用
    cat test.txt

    不要回显cat的结果。

    您可以用以下内容替换您的
    回显-e
    行以获得新的行:

    { echo; date "+$min %m%Y $min"; echo; } >> test.txt
    

    +1这感觉就像答案一样,
    echo$(some命令)
    应该在$(some命令)的输出上执行分词,因此将继续和后续IFS分开,
    echo“$(some命令)”
    可能会起作用,但显然没有理由像你提到的那样。你能再解释一下你的预期输出和你所说的
    1.
    是什么意思吗?还有,为什么要在接近末尾时重置
    min
    (看起来你在任何地方都没有使用它)?1。)我的目标是这个输出:01032014 1 020322014 2 03032014 3 04033014 4 05032014 5 06032014 6 07032014 7你将
    $min
    作为命令参数的一部分,因此它会得到某种解释。如果您只想让01..07在{01..07}中为min执行类似于
    的操作;执行回显“$min$(日期+%m%Y)”;完成