linuxshell编程指南第十九章------shell函数1
在菜单中进行选择时,最麻烦的工作是必须在选择后键入回车键,或显示“ press any key to continue”。可以使用dd命令解决不键入回车符以发送击键序列的问题。
dd命令常用于对磁带或一般的磁带解压任务中出现的数据问题提出质疑或转换,但也可用于创建定长文件。下面创建长度为1兆的文件my file。
[root@localhost huangcd]# dd if=/dev/zero of=myfile11 count=512 bs=2048
512+0 records in
512+0 records out
1048576 bytes (1.0 MB) copied, 0.0106073 seconds, 98.9 MB/s
[root@localhost huangcd]# ls -al |grep "myfile11"
-rw-r--r-- 1 root root 1048576 12-11 12:32 myfile11
拷贝文件时,测试目录是否存在是常见的工作之一。以下函数测试传递给函数的文件名是否是一个目录。因为此函数返回时带有成功或失败取值,可用i f语句测试结果。
[root@localhost huangcd]# cat is_it_directory
#!/bin/bash
is_it_directory(){
if [ $#-lt1 ]
then
echo "is_it_directory:I need an angument"
return 1
fi
_DIRECTORY_NAME=$1
if [ !-d $_DIRECTORY_NAME ]
then
return 1
else
return 0
fi
}
echo -n "enter destination directory:"
read DIREC
if is_it_directory $DIREC
then
echo "$DIREC does not exist,create it now?[y..n]"
fi
if语句总结:
总结:
1.if后要有空格
2.[] 中括号的开头和结尾要有空格!
3. [ $1-eq"root" ]中括号中的$1和-eq和"root"之间没有空格!
在v i编辑器中,可以列出行号来进行调试,但是如果打印几个带有行号的文件,必须使用nl命令。以下函数用n l命令列出文件行号。原始文件中并不带有行号。
要调用n u m b e r f i l e函数,可用一个文件名做参数,或在s h e l l中提供一文件名,例如:
$ number_file myfile
也可以在脚本中这样写或用:
number_file $1
number_file()
{
_FILENAME=$1
if [ $# -ne 1 ]
then
echo "number_file:I need a filename to number"
return 1
fi
loop=1
while read LINE
do
echo "$loop:$LINE"
loop=`expr $loop + 1`
done<$_FILENAME
}
[root@localhost huangcd]# number_file /home/huangcd/ok.txt
1:AC456
2:AC492169
3:AC9967
4:AC88345
使用函数的两种不同方法:从原文件中调用函数和使用脚本中的函数。
使用脚本中的函数的话,只要保证函数在调用之前已经定义好。
现在编写脚本就可以调用f u n c t i o n s . s h中的函数了。注意函数文件在脚本中以下述命令格式定位:
./<path to file>
使用这种方法不会创建另一个s h e l l,所有函数均在当前s h e l l下执行。
[root@localhost huangcd]# cat functions.sh
#!/bin/bash
func1()
{
echo "func1() is used"
}
[root@localhost huangcd]# cat direc_check
#!/bin/bash
. /home/huangcd/functions.sh
func1
echo "func1 is used in direc_check"
[root@localhost huangcd]# sh direc_check
func1() is used
func1 is used in direc_check
- 11-131分钟学会U盘启动安装Linux系统
- 11-13克隆MAC地址来绕过强制门户
- 11-13Linux运维常见故障及处理的 32 个锦囊妙计
- 11-13如何快速以管理员权限运行Linux命令?
- 11-13超全面的Linux应急响应技巧
- 11-136 款面向 Linux 用户的开源绘图应用程序
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-25优酷推出U镜到底等直播功能 已应用在羽毛球
- 12-25百川智能正式发布全链路领域增强大模型
- 12-25SHEIN4家仓储物流园获“零废工厂”认证
- 12-25西方博主在TikTok上展现中国风貌,“China
- 12-05亚马逊推出新一代基础模型 任意模态生成大模