从变量中删除额外的换行符

sau*_*rav 2 linux command

在此处输入图片说明

我正在编写一个脚本,我试图在其中导出一些变量,并且在打印时导出我的变量后,它会在它之后打印额外的一行。

在这里,我正在读取包含两列的 csv 文件。该脚本存在于文件 script.sh 中,我正在执行该文件 ./script.sh

#!/bin/bash
while IFS="," read f1 f2
do
      echo "Source IP        : $f1"     #it is printing without extra line
      echo "Destination IP   : $f2"               #it is printing without extra line  

    export sourceIP=$f1
    export destIP=$f2

    ssh -t -t sjain@$f1 <<ENDSSH
    #Start copying 33KB File
    echo "Destination IP Address: $destIP" # here it is printing an extra line after destIP
    startTime=$(($(date '+%s%N')/1000000))
    scp KB_33.txt sjain@$destIP:/home/sjain
    endTime=$(($(date '+%s%N')/1000000))
    printf 'Elapsed time in copying 33KB file: %s\n' $((endTime-startTime)) 
    #Write the stats to the file
    echo $sourceIP','$destIP',33KB,'$((endTime-startTime)) >> report.txt
    exit
    ENDSSH
done < ipaddress.csv
Run Code Online (Sandbox Code Playgroud)

由于上述问题,我在执行时

scp KB_33.txt sjain@$destIP:/home/sjain
Run Code Online (Sandbox Code Playgroud)

它把命令分成两部分,像这样 截屏

scp KB_33.txt sjain@$X.X.X.X
:/home/sjain
Run Code Online (Sandbox Code Playgroud)

当我直接对值而不是 destIP 进行硬编码时,它工作正常。

我怎样才能解决这个问题?

输入CSV文件数据

10.0.0.1,10.0.0.2
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 5

当您拆分 CSV 文件的内容时,您将使用逗号进行拆分,,. 这可能会出现问题,因为该文件中的第二个 IP 地址后面可能有一个尾随换行符。

解决此问题的最简单方法是简单地从$destIP变量的末尾切掉该字符,如下所示:

export sourceIP=$f1
export destIP=$(echo "$f2" | tr -d '\n')
Run Code Online (Sandbox Code Playgroud)