bash shell 提供了一些内置变量命令,使用它们可以使脚本编写更加方便,这里一起看看比较常用的几个。
echo:
命令格式:echo args #可以使字符串和变量的组合。
功能说明:将args知道定的字符串以及变量等显示到标准输出。
echo:
命令格式:echo args #可以使字符串和变量的组合。
功能说明:将args知道定的字符串以及变量等显示到标准输出。
shift:
命令格式:shift-Shift positional parameters
功能:这个语句每次运行都是使所有的位置参数依次向左移动一个位置,并使$#减1,直到减到0为止。
这个比较常用在shell的case语句中,我们以cdh中case匹配位置参数为例子。
while true;
do
case "$1" in
-h|--host)
DB_HOST=$2
shift 2
;;
-P|--port)
DB_PORT=$2
shift 2
;;
-u|--user)
DB_USER=$2
shift 2
;;
-p|--password)
case "$2" in
"")
read -esp "Enter database password: " DB_PASSWORD
echo
;;
*)
DB_PASSWORD=$2
;;
esac
shift 2
;;
--scm-host)
SCM_HOST=$2
shift 2
;;
--config-path)
SCM_CONFIG_PATH=$2
shift 2
;;
-v|--verbose)
VERBOSE=1
shift
;;
-f|--force)
FORCE=1
shift
;;
--)
shift
break
;;
*)
usage
exit 1
;;
esac
done
可以看到语句中使用$1来匹配相关的选项,对于$2来匹配选项的参数,对于有参数的选项是shift 2 表示要向左移动两次,没有参数的是shift,表示默认左移一次,这样就遍历了所有选项。
exit:
命令格式:exit-Exit the shell
功能:退出当前运行的shell程序,后面可以跟一个要返回的数字作为状态。
read:
命令格式:read 变量名表
功能:从标准输入读取字符串等信息,传给shell程序内部定义的变量,常用语shell脚本要与用户交互的情况下使用。
eval:
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args1,并将它们组合成一个新的命令,然后执行。
这个具体例子可通过看我博客中转载的shell中变量的变量与eval命令
exec:
命令格式:exec 命令参数
功能:exec命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,当前shell也就终止了。
exec与source一样可以在当前脚本执行命令,但是不同的是exec执行完命令后就是退出当前shell程序。
参考:
《跟老男孩学Linux运维:Shell编程实战》