每次在我的家庭ftp上传.cia文件时,我写了几个脚本来生成QR码,以观看我使用的文件夹inotify。当我有一个带有空格的文件时,会出现问题,其中包括一个两个三个.cia"它将生成4个QR码:one.png,two.png,three.png和one_two_three.png(这是我唯一想要的)。
编辑:如果我运行./despacer"文件名为one.cia"然后./rename我有理想的结果。我想这会将问题缩小到qr.sh
想法?非常感谢!
qr.sh
#!/usr/bin/env bash
dir=/ftproot
while true
do
inotifywait -m -q --format '%w%f' -e create,moved_to $dir | while read FILE; do
if [[ $FILE == *.cia ]]; then /ftproot/despacer.sh "$FILE" & /ftproot/rename.sh
fi
done
done
despacer.sh
#!/bin/bash
mv "$1" `echo $1 | sed 's/ /_/g'` 2>/dev/null
rename.sh
#!/bin/bash
basename -s .cia *.cia > qr.txt
for i in $(cat qr.txt);
do qrencode -o $i.png http://www.mywebsite.com/$i.cia
done
mv *.png qr/
rm qr.txt
exit
答案 0 :(得分:1)
引用有几个问题,这是空格失败的原因。最有问题的是您调用rename.sh
的脚本。
所有三个编辑都是:
#!/bin/bash
dir=/ftproot
while true
do
inotifywait -m -q --format '%w%f' -e create,moved_to "$dir" |
while read -r FILE; do
if [[ $FILE == *.cia ]]
then
/ftproot/despacer.sh "$FILE" & /ftproot/rename.sh "$FILE"
fi
done
done
#!/bin/bash
mv "$1" "${1// /_}"
#!/bin/bash
encode(){
for i in "${@#.cia}";
do qrencode -o "$i.png" "http://www.mywebsite.com/$i.cia"
done
}
encode "$@"
mv ./*.png qr/
我没有运行脚本,但认为它们是正确的。