Shell脚本变量的含义
$#:表示执行脚本传入参数的个数
$*:表示执行脚本传入参数的列表(不包括$0)
$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$@:表示执行脚本传入参数的所有个数(不包括$0)
$0:表示执行的脚本名称
$1:表示第一个参数
$2:表示第二个参数
$?:表示脚本执行的状态,0表示正常,其他表示错误
shell中的case语句用法
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认执行的命令序列
;;
esac
linux条件判断:eq、ne、gt、lt、ge、le
整数比较:
-eq: 测试两个整数是否相等;比如 $A -eq $B
-ne: 测试两个整数是否不等;不等,为真;相等,为假;
-gt: 测试一个数是否大于另一个数;大于,为真;否则,为假;
-lt: 测试一个数是否小于另一个数;小于,为真;否则,为假;
-ge: 大于或等于
-le:小于或等于
使用实例
#!/usr/bin/env bash
TOP_DIR="$(builtin cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd -P)"
echo ${TOP_DIR}
function copy() {
pushd ${TOP_DIR}/../
echo "skyler copy"
popd
}
function remove() {
pushd ${TOP_DIR}/../../
echo "skyler remove"
popd
}
function run() {
echo "run run_mode: $RUN_MODE"
if [[ $RUN_MODE = "cp" ]]; then
copy
elif [[ $RUN_MODE = "rm" ]]; then
remove
fi
}
function usage() {
echo "
Usage: $0 [mode]
Example: $0 [cp|rm]
"
}
function main() {
if [ $# -lt 1 ]; then
usage && return 1
fi
RUN_MODE=""
echo "input{#1}: $1"
if [ $# -ge 1 ]; then
case "$1" in
"cp") RUN_MODE="cp" ;;
"rm") RUN_MODE="rm" ;;
*) usage && return 0 ;;
esac
fi
run
[ $? -ne 0 ] && return 1
return 0
}
main "$@"
exit $?