sh Linux 中的 Undersired echo truncate

Undersired echo truncate in sh Linux

我想将两个变量作为输入发送到 shell 脚本中的另一个命令。我已经尝试了很多方法来发送这两个变量,但是我在使用 echo 命令时遇到了意想不到的问题。

        #!/bin/sh
        echo $DATE_NOW1
        Feb 17 2016
        echo $HOURS1
        13:06:47
        echo "$DATE_NOW1 $HOURS1"

        output : 13:06:4716

上面的字符串意外被截断 output.i 从文件读取后正在获取变量。(例如:HOURS1=cat time_now |cut -d '.' -f 1

我尝试了其他方法,例如 foo="$date_now $hours" 和 foo "${date_now}${hours}" 但仍然没有用。

谁能指出我哪里错了?

您的变量 DATE_NOW1 以 \r 字符结尾。由于 echo 总是以 \n 结束显示,因此 echo $DATE_NOW1 效果很好(实际上显示 Feb 17 2016\r\n)。但是当你连接时,echo 显示这个字符串: Feb 17 2016\r13:06:47\r\n

尝试去掉尾部\r,或者在DATE_NOW1

末尾加一个\n
#!/bin/sh

DATE_NOW1="Feb 17 2016"
HOURS1=13:06:47
echo "$DATE_NOW1 $HOURS1"

您必须使用引号,因为有空格。