sh/bash/dash/ksh/zsh等Shell脚本
-
aBiNg
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
#1
帖子
由 aBiNg » 2006-10-16 15:34
$cd ~/sripts
$gedit abspath
代码: 全选
#! /bin/bash
#File Name: ~/scripts/abspath
#Author: helo_aBiNg
#Written: 06.10.16
#
if test $# != 1
then
echo "Usage: abspath [one file]"
exit 1
else
sub_path=(`find $(pwd) -name $1`) #数组赋值
fi
N=${#sub_path[*]} #数组维数
if [ $N = 0 ]
then
echo "result: No such file in current directory"
exit 1
else
m=0
while test ${#sub_path[*]} != $m && test -f ${sub_path[m]} #判断不同路径相同文件名输出次数,并排除同名文件夹
do
echo "${sub_path[m]}"
m=`expr $m + 1`
done
fi
exit 0
Save it!
$chmod +x ~/sripts/abspath
$sudo ln -s ~/sripts/abspath /usr/bin/
Try to run it:
$cd /usr
$abspath beryl
>/usr/bin/beryl
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#2
帖子
由 eexpress » 2006-10-17 15:51
不如locate和type
● 鸣学
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#3
帖子
由 eexpress » 2006-10-17 15:55
不如locate和type
● 鸣学
-
aBiNg
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
#4
帖子
由 aBiNg » 2006-10-17 19:23
eexpress 写了:不如locate和type
还有:
$find $(pwd) -name xxx
练习嘛,没实际意义的...
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#5
帖子
由 eexpress » 2006-10-17 19:38
不如这样简单。
[ -z $1 ] && echo “xxxx” && exit 1;
● 鸣学
-
aBiNg
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
#6
帖子
由 aBiNg » 2006-10-18 14:14
eexpress 写了:
不如这样简单。
[ -z $1 ] && echo “xxxx” && exit 1;
这个是什么道理呢?
-
Guo R.H
- 帖子: 87
- 注册时间: 2006-09-15 19:14
#7
帖子
由 Guo R.H » 2006-10-21 19:42
代码: 全选
[ -z $1 ] && echo "Usage : [filename]" && exit 1
sub_path=(`find $(pwd) -name $1 `)
N=${#sub_path[*]} #数组维数
[ $N = 0 ] && echo "result: No such file in current directory" && exit 1
m=0
while test ${#sub_path[*]} != $m && test -f ${sub_path[m]}
do
echo "${sub_path[m]}"
m=`expr $m + 1`
done
exit 0
-
Zelgadiss
- 帖子: 8
- 注册时间: 2006-11-06 10:25
#8
帖子
由 Zelgadiss » 2006-11-06 10:59
我没有看懂具体是什么意思....
如果是要遍历的话,为什么不用递归函数呢?
例如:
代码: 全选
fun()
{
local i
local path=$PWD
for i in `ls`;do
if [ -d $i ] ;then
cd $i
fun
cd $path
else
command $i
fi
done
}
如果不是遍历结构的话,那么都有对应命令的吧.....