Linux Bash Shell学习(十):流程控制——for
来源:互联网 发布:优惠券淘宝客源码 编辑:程序博客网 时间:2024/06/11 14:41
本文也即《Learning the bash Shell》3rd Edition的第五章Flow Control之读书笔记之二,但我们将不限于此。flow control是任何编程语言中很常用的部分,也包括了bash。在这里,我们将继续学习他们。 和C不一样的是,在shell中是匹配list中的元素,因此非常适合用于命令的参数,文件列表。for格式如下: for name [in list ] 我们通过下面的例作进一步学习。一共设置了三个例子 # Test for the bash loop : for method function getpath # 通常$PATH中包含~/bin目录,一般不存在,在ls的显示中会报告错误,需要挑出进行处理。同时我们增加一个空的元素来进行分析。 for dir in $path #echo 'run getpath' echo 'run getpath1' # Test 2 显示指定文件的是否是有效文件名 echo 'run fileinfo' 下面是一个递归的例子,我们希望将目录下的文件也显示出来。根据层次结构,下一级比上一级向后挪一个tab。 # Test 3: 显示目录下的文件,采用递归方式 。showdirfile 表示显示所在目录的所有文件,如果也是目录,递归执行。为了记录方便,将注释加载命令行后面,注意这只是为了阅读方便,而不是shell应有的语法。 相关链接: 我的Linux操作相关文章
do
statements that can use $name...
done
#
# Test 1: 显示$PATH中各个具体路径的详细信息
{
# 设置分割符号为“:”,缺省为空格
IFS=:
# for测试,其中ls -ld中的-d表示之显示目录的属性,不显示目录下属的文件。
for dir in $PATH
do
ls -ld $dir
done
}
function getpath1
{
path=$PATH::
echo check : $path
IFS=:
do
# 如果是空元素,将其转换为当前目录。
if [ -z $dir ] ; then dir=. ; fi
if ! [ -e $dir ]; then
echo "$dir is not exist!"
elif ! [ -d $dir ]; then
echo "$dir is not a directory!"
else
ls -ld $dir
fi
done
}
#getpath
getpath1
function finfo
{
if ! [ -e "$1" ]; then
echo "$1 is not an availble file."
else
echo "$1 is a file."
fi
}
# 如果命令没带参数,即list为空,则不执行for里面的代码
for filename in $@; do
echo "in for loop..."
finfo "$filename"
done
function showdirfile
{
#step1:只有是有效目录文件,才search
if [ -d $1 ] ; then
#step2,比上一级后退tab,记录前面tab的字符
currenttab+="/t"
#$(command <command>)用于给出command的输出结果,作为字符串。
#step 3:搜索ls <dir_name>所显示的entry,如果是文件,显示,如果是字符串显示,并在后面加上"/",表明是目录,使用递归,检索该目录下的文件。
for file in $(command ls $1); do
echo -e -n ${currenttab}$file
#step 4:文件的含路径名字为$1/$file,由于我们没有采用cd $file,即没有进入该目录进行访问,因此要记录path,如果是目录,用dir记录下这个子目录的名字
if [ -d $1/$file ]; then
echo "/"
showdirfile $1/$file
else
echo
fi
done
#step2,执行完推出,恢复上一级的前面的tab字符串,即去掉最后的/t。
currenttab=${currenttab%"/t"}
# end of step 1
fi
}
# 之前设置了IFS,会使得ls的输出不是以空格为分割,异常,需要重置它
unset IFS
echo 'run file architechture'
showdirfile ${1:-"~"}
- Linux Bash Shell学习(十):流程控制——for
- Linux Bash Shell学习(九):流程控制——if/else
- Linux Bash Shell学习(十一):流程控制——case
- Linux Bash Shell学习(十二):流程控制——select
- Linux Bash Shell学习(十三):流程控制——while/util
- Linux Bash Shell学习(九):流程控制——if/else
- Bash Shell 流程控制 —— select
- Linux Bash Shell学习(二十):命令行处理
- Linux学习笔记——Bash Shell
- linux——shell流程控制
- Linux Shell——流程控制
- Shell—流程控制
- 【Linux学习笔记】Shell 基础(3) — Shell流程控制语句
- Linux Bash Shell学习(七):shell编程基础——运行Shell脚本、function
- 《学习bash》笔记--流程控制
- linux bash shell 学习
- 流程控制Linux Shell
- linux shell 流程控制
- 如何调用API实现WINDOWS编程
- 清除桌面图标阴影
- 王辉老师答网友1(转)
- 智能温度、电压监测系统
- 打印另存为代码
- Linux Bash Shell学习(十):流程控制——for
- 网友与王洪辉老师问答 (1)
- CICS启动问题之DBDCCICS DFHSIP IS NOT APF-AUTHORIZED
- [MUSIC]Brand New Day--Ryan Star
- VB设置进程优先级
- ipcs命令和ipcrm命令
- V4L2视频编程框架
- Ubuntu非正常关机解决办法一例
- 清除SQLServer数据库日志(SqlServer2005)