在bash中使用variablescp

返回的文件将在文件名中有空格,所以我通过sed运行文件名在开头和结尾附加引号。 但是,当我使用CF与CP它失败。 如果我手动echo $ CF并使用生成的文件来代替$ CF,它工作得很好。 有什么问题?

CF=`ls -tr /mypath/CHS1*.xlsx | tail -1 | sed -e 's/^/"/g' -e 's/$/"/g'` cp $CF "/mydest/myfile.xlsx" 

你不需要添加这样的引号(实际上,它可能不会工作)。 相反,只需在cp使用它们即可:

 CF=$(ls -tr /mypath/CHS1*.xlsx | tail -1) cp "$CF" "/mydest/myfile.xlsx" 

我将它从使用反引号更改为新的( 和首选的 ) $()语法。