文件创建中的问题(当存在空格时)

时间:2016-10-20 17:14:21

标签: bash shell scripting

每次在我的家庭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

1 个答案:

答案 0 :(得分:1)

引用有几个问题,这是空格失败的原因。最有问题的是您调用rename.sh的脚本。

所有三个编辑都是:

qr.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

despacer

#!/bin/bash

mv "$1" "${1// /_}"

rename.sh

#!/bin/bash

encode(){
                for i in "${@#.cia}";
                do qrencode -o "$i.png" "http://www.mywebsite.com/$i.cia"
                done
        }

encode "$@"
mv ./*.png qr/

我没有运行脚本,但认为它们是正确的。