12

返されるファイルのファイル名にはスペースが含まれているため、sed を介してファイル名を実行し、先頭と末尾に引用符を追加します。ただし、cp で $CF を使用すると失敗します。手動で $CF をエコーし​​、結果のファイルを $CF の代わりに使用すると、問題なく動作します。どうしたの?

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

1 に答える 1

16

そのような引用符を追加する必要はありません(実際、おそらく機能しません)。cp代わりに、次の行でそれらを使用してください。

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

バックティックの使用から新しい(そして優先される$()構文に変更しました。

于 2013-01-29T18:24:48.397 に答える