歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

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

Copyright © Linux教程網 All Rights Reserved