Альтернативный метод вместо использования для f в команде оболочки "$ @"? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть следующий скрипт, который я получил с tinypng.com, и вместо того, чтобы использовать для f в команде "$ @", я бы хотел, чтобы он просто запускался в указанной папке на рабочем столе под названием FOLDER.Спасибо!

echo ~/Desktop/FOLDER
for f in "$@"
do

   echo $f | while IFS= read file
   do
        filename=$(basename $file)
        ext=$(echo ${filename##*.} | tr "[:upper:]" "[:lower:]")
        if [ -f $file ]
        then
            if ( [ $ext == "png" ] || [ $ext == "jpg" ] || [ $ext == "jpeg" ] )
            then
                JSON=`curl -i --user api:00000000000000 --data-binary @$file https://api.tinypng.com/shrink 2>/dev/null  `
                URL=${JSON/*url\":\"/}
                URL=${URL/\"*/}

                curl $URL>${file} 2>/dev/null
            fi
        fi
    done

done

afplay /System/Library/Sounds/Submarine.aiff

1 Ответ

0 голосов
/ 25 сентября 2018

Если вы просто пытаетесь перебрать файлы в папке, то for f in ~/Desktop/FOLDER/* должно сработать.

Или, альтернативно, for f in $(find ~/Desktop/FOLDER -maxdepth 1 -type f) Эта папка также удаляет все подпапки из списка, чтобы вы могли избавиться от if [ -f $file ] (но в нем также перечислены скрытые файлы, не уверен, что это нормально для вашего случая или нет)

...