我正在使用bash脚本在/ tmp /中使用文件的名称创建一个新文件夹,然后将该文件复制到该文件夹中。基地名称与空格在bash脚本中?
#!/bin/bash
MYBASENAME="`basename $1`"
mkdir "/tmp/$MYBASENAME"
for ARG in "[email protected]"
do
mv "$ARG" "/tmp/$MYBASENAME"
done
行为:
当我mymove "/home/me/downloads/my new file.zip"
键入它显示了这个:
mkdir /tmp/my
new
file.zip
mv: rename /home/me/downloads/my new file.zip to /tmp/my\nnew\nfile.zip:
我有很多周围的一切报价,所以我不明白这是为什么不按预期工作。
另外,如果有多个文件,我在那里有表单循环。我想根据第一个参数的基本名称将它们全部复制到同一个文件夹中。
我注意到很多默认的shell脚本使用sh而不是bash。我仍然无法分辨出太多差别,除了像echo \ c这样的东西来保持新行不出现。感谢您的提示和有用的答案。 – cwd
使用echo \ c的便携方式是使用'printf',您只需在格式字符串中省略'\ n'。最经常使用的bashisms可以说是使用了数组变量,非POSIX语法(例如'[[...]]'用于测试,用于for((...))'的循环以及'select'构造。 – Jens
这不适用于在我的macosx狮子(GNU bash,版本3.2.48(1) - 发布(x86_64-apple-darwin11) – rjha94