Bash将输出解析为变量

时间:2012-04-17 08:20:41

标签: string bash awk jpeg

我正在尝试将我的照片分类为肖像和风景。我想出了一个打印jpegs大小尺寸的命令:

identify -format '%w %h\n' 1234.jpg 
1067 1600

如果我在bash脚本中使用它来将所有风景图片移动到另一个文件夹,我希望它会像

#!/bin/bash
# loop through file (this is psuedo code!!)
for f in ~/pictures/
do
 # Get the dimensions (this is the bit I have an issue with)
 identify -format '%w %h\n' $f | awk # how do I get the width and height?
 if $width > $hieght
  mv ~/pictures/$f ~/pictures/landscape/$f
 fi
done

一直在查看awk手册页,但我似乎无法找到语法。

4 个答案:

答案 0 :(得分:4)

您可以使用array

# WxH is a array which contains (W, H)
WxH=($(identify -format '%w %h\n' $f))
width=${WxH[0]}
height=${WxH[1]}

答案 1 :(得分:3)

您不需要AWK。做这样的事情:

identify -format '%w %h\n' $f | while read width height
do
    if [[ $width -gt $height ]]
    then
        mv ~/pictures/$f ~/pictures/landscape/$f
    fi
done

答案 2 :(得分:1)

format=`identify -format '%w %h\n' $f`;
height=`echo $format | awk '{print $1}'`;
width=`echo $format | awk '{print $2}'`;

答案 3 :(得分:-2)

Goofballs,现在是“doh,明显的”:

# use the identify format string to print variable assignments and eval
eval $(identify -format 'width=%w; height=%h' $f)