碰到一个shell中函数调用的小问题,记录一下。
shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用;一种是通过加载shell,在shell中直接调用;第三种是将函数写入文件。然后在其它shell中调用函数。
这里写一下关于第三种方法的样例:
is_it_a_directory() { if [ $# -lt 1 ];then echo "is_it_a_directory:I need an argument" return 1 fi _DIRECTORY_NAME=$1 if [ ! -d $_DIRECTORY_NAME ];then return 1 else return 0 fi } error_msg() { echo -e "\007" echo $@ echo -e "\007" return 0 }
这个文件定义了两个函数,我们在以下的shell中调用者两个函数,这里有一点须要注意,在调用之前,要加载函数文件。加载的方式为 . /路径。注意有个空格
#!/bin/sh . functions.sh echo -n "enter destination directory :" read DIREC if is_it_a_directory $DIREC then : else error_mag "$DIREC does not exist...creating it now" mkdir #DIREC > /dev/null 2>&1 if [ $? != 0 ]; then error_msg "could not " exit 1 else : fi fi echo "extracting files..."