LOl*_*ffe 5 unicode bash shell scripting file
我有一个文件列表,我试图在bash shell脚本中复制和移动(使用cp和mv).我遇到的问题是,我无法获得任何命令来识别大量文件,似乎因为文件名包含空格和/或unicode字符.我找不到任何开关来解码/重新编码这些字符.相反,例如,如果我复制"file name.xml",我会得到"*.xml"和脚本错误,表明找不到我的结果文件.有没有人知道将处理这些文件的设置或命令?
编辑(添加当前代码):当我运行时:
MacBookPro:桌面$ ./script.sh
#!/bin/sh
dateVar=`date +%Y-%m-%d`
mkdir /Volumes/Documents/SMSarchive/$dateVar
cd /Volumes/Documents/SMSarchive/SMSdrop
for i in *.xml
do
cp $i /Volumes/Documents/SMSarchive/$dateVar/$dateVar-$i
done
Run Code Online (Sandbox Code Playgroud)
我收到消息:
用法:cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ... target_directory
......当它命中"cp"命令时.脚本实际上还有更多,它可以进一步处理复制的文件.使用"常规"文件名,例如'file.xml',一切正常.它只是带有空格或Unicode字符的文件,我遇到问题.
Ign*_*ams 18
空格问题表明报价不足.以下是不正确的:
someprogram $file
Run Code Online (Sandbox Code Playgroud)
正确的版本如下:
someprogram "$file"
Run Code Online (Sandbox Code Playgroud)