0
下面是我正在爲媒體備份工作的腳本的片段。當從終端命令行調用腳本時,腳本按預期運行。但是,在將Platypus腳本包裝到應用程序後,將創建目標目錄,但For循環不會運行,並且沒有介質複製到目標文件夾。任何人都知道我在這裏做錯了嗎?用於與鴨嘴獸包裝後的循環休息
#!/bin/sh
DEST_PATH=/Volumes/MediaBackup
mkdir -p $DEST_PATH
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for i in $(find "$PWD" -iname "*.jpg")
do
FILENAME="$(basename $i)"
MD5="$(md5 -q $i)"
cp "$i" "$DEST_PATH/$MD5-$FILENAME"
done
IFS=$SAVEIFS
溫柔的男人和/或女士們,謝謝!以下是使用您的評論的工作腳本。感謝您快速轉身。應該在這之前完成。
#!/bin/bash
DEST_PATH=/Volumes/PrivateMain/Media
mkdir -p $DEST_PATH
SAVEIFS=$IFS
IFS=$(printf "\n\b")
for i in $(find "/Users" -iname "*.jpg")
do
FILENAME="$(basename $i)"
MD5="$(md5 -q $i)"
cp "$i" "$DEST_PATH/$MD5-$FILENAME"
done
IFS=$SAVEIFS
鴨嘴獸是否有可能改變你目前的工作目錄?你明確地命名了輸出目錄,所以對於將要去的地方沒有歧義,但是'$ PWD'要改變,你可能會在'find'變空的地方。 –
可能不相關,但請參閱[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001),以獲得迭代find'輸出的正確方法。 – chepner
聽起來好像你正在用'bash'從命令行運行你的腳本,但它正在Platypus-wrapped版本的'/ bin/sh'中運行。在每種情況下,echo都會有不同的表現。 (也就是說,'-e'被'/ bin/sh'視爲輸出的文字字符串,而不是用於處理轉義字符的選項。)使用'printf'\ n \ b''代替便攜式行爲。 – chepner