我正在使用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