无法修剪 在变量中

问题描述 投票:0回答:2

我从远程目录获取文件列表。现在我想知道这些文件是否存在于本地目录中。我的问题是,每个文件名字符串中的

\r
是不可修剪的。我之前在第四行做过,它有效。

numOfRemoteFiles=`expect countRemoteFiles.sh $user $remotedir $password $N | 
tail -1 | tr -d '\r'`
numOfRemoteFiles=$((numOfRemoteFiles-1))
for remotef in `expect forLocalDir.sh $user $remotedir $password $N | tail -n$numOfRemoteFiles`
do
    remotef=${remotef##*/}
    remotef=$remotef | tr -d '\r'
    if [ ! -f $localdir/$remotef ]; then
        expect receiveFile.sh $user $localdir $remotedir $password $N $remotef
    fi
done

我以 ascii 和 hex 格式打印了文件名,这就是结果:

test1.txt
0000000    74  65  73  74  31  2e  74  78  74  0d  0a                    
0000013
test2.txt
0000000    74  65  73  74  32  2e  74  78  74  0d  0a                    
0000013
test3.txt
0000000    74  65  73  74  33  2e  74  78  74  0d  0a                    
0000013
bash expect
2个回答
6
投票

这没有达到您的预期:

remotef=$remotef | tr -d '\r'

您的意思可能是:

remotef=$(echo "$remotef" | tr -d '\r')

0
投票

我的示例字符串修剪(如 Java 中的 String.trim()):

function trim(){ # Exaple: remoref=" da da\n da  da \r "; echo => "da da da da"
    trimed=$@;
    trimed=$(echo "$trimed" | tr -d '\n');
    trimed=$(echo "$trimed" | tr -d '\r');
    echo $trimed;
}

该函数可以这样调用:

remotef=$(trim "$remotef");
© www.soinside.com 2019 - 2024. All rights reserved.