当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-16 10:05 
头像

注册: 2007-09-16 8:29
帖子: 14253
送出感谢: 172
接收感谢: 272
求一段shell脚本,分析壁纸文件的,求高手协助!!
先看一下下面这一段脚本:
[bash]
wh=`xrandr |grep current|awk -F"current" '{print $2}'|awk -F"," '{print $1}'|sed 's/\ //g'`
w=`echo ${wh%%'x'*}`
h=`echo ${wh##*'x'}`

choiced=0
f_wall=0
echo ' '
while [ $choiced = 0 ]; do
echo '***********************************'
echo '** 将要搜索可用壁纸 **'
echo '** 请选择 壁纸搜索方式 **'
echo '***********************************'
WML_LIST=('搜索长宽比和你的屏幕一致的' '搜索所有壁纸,包括长宽比不一致的')
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i.${WML_LIST[$i]} "
done
echo ' '
read -n 1 f_wall
echo ' '
echo "你选择了:${WML_LIST[$f_wall]} )"
echo ' '
done


echo '**********************************'
echo '** 按任意键 搜寻可用壁纸 **'
echo '** 请耐心等待 **'
echo '**********************************'
echo ' '
read -n 1 choice_wml
echo ' '
m=0

other_wall=('/usr/share/wallpapers/bluebird-2010-08-1920x1200-xubuntu.png' \
'/usr/share/wallpapers/greybird-wall-1920x1200.png' \
'/usr/share/wallpapers/kde-default.png' \
'/usr/share/backgrounds/gnome/TwoWings.jpg' \
'/usr/share/backgrounds/gnome/Wood.jpg' \
'/usr/share/backgrounds/gnome/YellowFlower.jpg' \
'/usr/share/xfce4/backdrops/ubuntustudio-olis.jpg' \
'/usr/share/xfce4/backdrops/xfce-stripes.png' \
'/usr/share/xfce4/backdrops/xubuntu-precise-right.png')

for ((i=0; i<179; i++))
do
if [ -f ${other_wall[$i]} ] ; then
if [ $f_wall == "0" ]; then
wh1=`identify ${other_wall[$i]}`
wh2=`echo "$wh1" | awk '{ print $3; }'`
w2=`echo ${wh2%%'x'*}`
h2=`echo ${wh2##*'x'}`
if [ $[ $w*1000/$w2 ] -eq $[ $h*1000/$h2 ] ] ; then
echo "wallpapers:${other_wall[$i]}">>~/.icon-DE/desk.rc
echo "发现壁纸:${other_wall[$i]}"
m=$[ $m+1 ]
elif [ $[ $w*100/$h ] -eq 125 ] || [ $[ $w*100/$h ] -eq 133 ] ; then
if [ $[ $w2*100/$h2 ] -eq 125 ] || [ $[ $w2*100/$h2 ] -eq 133 ] ; then
echo "wallpapers:${other_wall[$i]}">>~/.icon-DE/desk.rc
echo "发现壁纸:${other_wall[$i]}"
m=$[ $m+1 ]
fi
else
if [ $[ $w2*100/$h2 ] -gt 133 ] ; then
echo "wallpapers:${other_wall[$i]}">>~/.icon-DE/desk.rc
echo "发现壁纸:${other_wall[$i]}"
m=$[ $m+1 ]
fi
fi
else
echo "wallpapers:${other_wall[$i]}">>~/.icon-DE/desk.rc
echo "发现壁纸:${other_wall[$i]}"
m=$[ $m+1 ]
fi
fi
done
[/bash]
脚本说明:
先用xrandr读出你的屏幕分辨率,将长宽存入变量w、h中。
引用:
other_wall=(...

里面是文件列表,现在不是动态生成的,是直接写到shell里面的。他列出的是“/usr/share/wallpapers/”、“/usr/share/backgrounds/”、“/usr/share/backgrounds/gnome/”、“/usr/share/xfce4/backdrops/”这几个目录下面的文件。

然后是一个循环,判断图片文件是否可访问,并用“identify”命令读出图片的尺寸大小,将长宽存入w2、h2中,用于比较图片是否适合做桌面壁纸。适合的写进配置文件。

现在的缺陷:不是动态生成数组,循环次数也不是动态的。

问题:
动态生成数组的那部分shell脚本,怎么写?
求高手解决!!

自己解决了。数组部分写成下面样子。

[bash]
x=0
for filename in /usr/share/wallpapers/*.jpg ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/wallpapers/*.png ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/backgrounds/*.jpg ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/backgrounds/*.png ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/xfce4/backdrops/*.jpg ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/xfce4/backdrops/*.png ;
do
other_wall[$x]=$filename
let "x+=1"
done

for filename in /usr/share/wallpapers/*.JPG ;
do
other_wall[$x]=$filename
let "x+=1"
done
for filename in /usr/share/wallpapers/*.PNG ;
do
other_wall[$x]=$filename
let "x+=1"
done

for filename in /usr/share/backgrounds/*.JPG ;
do
other_wall[$x]=$filename
let "x+=1"
done

for filename in /usr/share/backgrounds/*.PNG ;
do
other_wall[$x]=$filename
let "x+=1"
done

for filename in /usr/share/xfce4/backdrops/*.JPG ;
do
other_wall[$x]=$filename
let "x+=1"
done

for filename in /usr/share/xfce4/backdrops/*.PNG ;
do
other_wall[$x]=$filename
let "x+=1"
done
[/bash]


_________________
闻到死太贵, 麦克价更高。 有了笨笨兔, 二者皆可抛。
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-16 11:29 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
代码:
a=(`find [email protected]  -name *.png`)
for ((i=0; i<${#a[@]}; i++))
do
echo ${a[i]}
done


脚本后输入存放图片文件的绝对路径作为脚本的参数


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-16 12:19 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
囗囗囗囗 cet-4


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-16 12:45 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
枫叶饭团 写道:
囗囗囗囗 cet-4


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-17 2:57 
头像

注册: 2011-09-06 22:04
帖子: 1354
送出感谢: 12
接收感谢: 9
无语,数组部分没那么麻烦吧。不过2楼给出答案了。 :em01


_________________
  • The eternal law


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-18 13:09 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
one-liner
代码:
other_wall=(/usr/share/{backgrounds,wallpapers,xfce4/backdrops}/*.{jpg,png,gif})

没有必要支持大写文件名。


_________________
代码:
] ls -ld //



_________________
评价: 3.7% ljj_jjl2008
 
页首
 用户资料  
 
7 楼 
 文章标题 : Re: [已解决]求一段shell脚本,分析壁纸文件的,求高手协助!!
帖子发表于 : 2012-06-18 13:27 
头像

注册: 2009-06-04 12:06
帖子: 122
送出感谢: 0 次
接收感谢: 3
一楼第一句还不如
代码:
wh = `xrandr | awk -v RS=','  '/current/ {print $2"x"$4}'`

为什么要取尺寸呢... feh之类的--bg-scale --bg-center --bg-max不够用么??
代码:
find ~/wallpaper -type f -print0 | shuf -n1 -z | xargs -0 feh --bg-center


_________________
Mea Culpa!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译