我正在编写一个脚本,我试图在其中导出一些变量,并且在打印时导出我的变量后,它会在它之后打印额外的一行。
在这里,我正在读取包含两列的 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)
当您拆分 CSV 文件的内容时,您将使用逗号进行拆分,,
. 这可能会出现问题,因为该文件中的第二个 IP 地址后面可能有一个尾随换行符。
解决此问题的最简单方法是简单地从$destIP
变量的末尾切掉该字符,如下所示:
export sourceIP=$f1
export destIP=$(echo "$f2" | tr -d '\n')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5085 次 |
最近记录: |