$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

区别:@*

  • 相同点:都是引用所有参数
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在12 3)则"*" 等价于 “12 3"(传递了一个参数);而“@" 等价于 "1""2" "$3"(传递了三个参数)

一个守护脚本 demon:

###################
# VERSION=0.0.
################### #!/bin/bash
###############################
####Global parameters##########
############################### set -x #echo on CUR_DIR=`pwd`
VA_LOG_LEVEL="err"
VA_RUN_LEVEL="demon" ####for record file delete
DEFAULT_DAYS=
RECORD_FILE_PATH=/var/video_record
DEFAULT_FILE_CHECK=
##### unit : G
DEFAULT_MINI_SPACE=
PROCESS_NUM=
#CertMS
#DarwinStreamingServer #CertMS_Server
#Darwin_Server #functions
###################
##parse argument
###################
usage()
{
echo "######################################" echo "usage of maintain.sh :"
echo "options "
echo "-l : videomon log level [warn , info , err] , default is err"
echo "-m : videomon run mod[demon , foreground] , default is demon"
echo "-c : record file delete check! [ 0:not check 1:check , default is 1]"
echo "-n : [Delete the record files of the n days ago , default is 15 days]"
echo "-d : [record file path , default is :/var/video_record]"
echo "For example: ./maintain.sh -l info -m foreground -c 1 -n 10 -d /video_record or ./maintain.sh "
echo "-? : usage info" echo "######################################"
} get_opt()
{
while getopts ":?l:m:c:n:d:" optname
do
case "$optname" in
"l")
VA_LOG_LEVEL=$OPTARG
;;
"m")
VA_RUN_LEVEL=$OPTARG
;;
"c")
DEFAULT_FILE_CHECK=$OPTARG
;;
"n")
DEFAULT_DAYS=$OPTARG
;;
"d")
RECORD_FILE_PATH=$OPTARG
;;
"?")
usage
exit
;;
*)
# Should not occur
echo "maintain.sh :Unknown error while processing options"
exit
;;
esac
done
} ####################
##Video_Monitor clean
####################
video_monitor_clean()
{
for (( i = ; $i < PROCESS_NUM; i++ ));
do
echo $i;
pid_videomon=`ps aux|grep -v grep|grep "videomon$i" | grep "$"|sed -n '1P'|awk '{print $2}'` if [ $pid_videomon ]
then
killall - videomon$i
fi
done
} ####################
##ran_videomon_monitor
####################
ran_videomon_monitor()
{
echo $
cd $CUR_DIR/bin$ if [ $VA_RUN_LEVEL == "demon" ]
then
nohup ./videomon$ -l $VA_LOG_LEVEL -p pid -d &
else
nohup ./videomon$ -l $VA_LOG_LEVEL -p pid &
fi echo Start videomon Success!
} ####################
##record file check
####################
record_file_check()
{
cd $CUR_DIR
if [ -f record_file_delete.sh ]
then
chmod +x record_file_delete.sh
###
pid_record_sh=`ps aux|grep -v grep|grep "record_file_delete.sh" | grep "$"|sed -n '1P'|awk '{print $2}'`
if [ -z $pid_record_sh ]
then
nohup ./record_file_delete.sh -n $DEFAULT_DAYS -d $RECORD_FILE_PATH -s $DEFAULT_MINI_SPACE &
else
echo "record_file_delete.sh is running!"
fi
###
else
echo "Can not find record_file_delete.sh"
return
fi
} ####################
##videomon_maintain
#################### videomon_maintain()
{
while true
do
sleep ####Check whether need to delete record files
if [ $DEFAULT_FILE_CHECK -eq ]
then
record_file_check
fi for (( i = ; $i < PROCESS_NUM; i++ ));
do
echo $i;
pid=`ps aux|grep -v grep|grep "videomon$i -l $VA_LOG_LEVEL" | grep "$"|sed -n '1P'|awk '{print $2}'`
if [ -z $pid ]
then
ran_videomon_monitor $i
fi
done
done
} ###############
##start process
###############
get_opt $@
if [ $? != ]
then
echo get_opt unknow options!
exit
fi video_monitor_clean for (( i = ; $i < PROCESS_NUM; i++ ));
do
ran_videomon_monitor $i
done videomon_maintain

参考http://www.cnblogs.com/kaituorensheng/p/4002697.html

shell参数 传递的更多相关文章

  1. Shell如何传递字符串

    Shell 在写函数的时候,有时候需要传递字符串,由于字符串中有空格,所以结果总是不对,下面写个小例子,解决这个问题: #!/bin/bash # value init TT="adb sh ...

  2. shell 参数

    转:http://hi.baidu.com/ipvsadm/item/489d9e16460195ddbe9042ee linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中s ...

  3. shell 参数与逻辑结构语句

    shell参数 如同ls 命令可以接受目录等作为它的参数一样,在shell编程时同样可以使用参数.Shell有位置参数和内部参数. 1. 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N ...

  4. JAVA 数组作为方法参数—传递地址

    package Code411;//数组作为方法参数—传递地址public class DodeArrayParam { public static void main(String[] args) ...

  5. shell如何传递变量到另一个脚本文件中

    http://www.jbxue.com/article/shell/20707.html本文介绍了shell脚本传递变量到另一个脚本文件中的方法,在脚本中调用另一脚本,即创建了一个子进程,感兴趣的朋 ...

  6. Linux Shell参数替换

    Linux Shell参数替换 2013-06-03 10:01 by 轩脉刃, 1816 阅读, 0 评论, 收藏, 编辑 Bash中的符号的作用是参数替换,将参数名替换为参数所代表的值.对于 来说 ...

  7. Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间

    Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间 一丶URLconf配置 ...

  8. hive shell参数

    Hive Shell参数 1.Hive命令行 语法结构 hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e ...

  9. shell如何传递外部参数给文件

    shell里面如何传递参数: sh test.sh zhang 20 那test.sh里面咋接受参数呢? #!/usr/bin/env sh name=$1 age=$2 echo "nam ...

随机推荐

  1. Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!

    多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识.不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题: 同样是直接点击网页上提供的 .mp4 视频文件链 ...

  2. API:access_token

    access_token存在意义:   1.身份验证(一个channel_id一般有0个或1个有效的access_token) 2.限制用户访问服务器数据的有效期 3.限制用户访问权限 access_ ...

  3. S7-1500 读取V90/S120/S210/G120的常用驱动参数

    S7-1500 读取V90/S120的常用驱动参数 此程序已更新,可以下载例子程序 https://files.cnblogs.com/files/lion-zheng/PLC_async_drive ...

  4. git(github)常用命令

    安装git sudo apt-get install git 显示git版本 git version 显示system属性,对应为/etc/gitconfig文件的内容 git config --sy ...

  5. 2016 Multi-University Training Contest 2 - 1005 (hdu5738)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题目大意:给定平面上的n个点,一个集合合法当且仅当集合中存在一对点u,v,对于集合中任意点w,均 ...

  6. 【BZOJ5084】hashit(后缀自动机水过)

    点此看题面 大致题意: 每次在字符串后面加入或删除一个字符,求本质不同的子串个数. 后缀自动机 先说明,此题后缀自动机的确能过. 但我的后缀自动机比较弱,遇上一个较强的\(Hack\)数据就被卡掉了. ...

  7. Uva 11384 正整数序列

    题目链接:https://vjudge.net/problem/UVA-11384 题意:给定正整数 n,用最少的操作把序列 1,2,,,n 全部变成 0: 操作是:每次可以从序列中选择一个或者多个, ...

  8. 转:深入浅出spring IOC中四种依赖注入方式

    转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...

  9. 多线程, Thread类,Runnable接口

    多线程 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 单线程程序:即,若有多个任务只能依次执 ...

  10. LeetCode804. Unique Morse Code Words

    题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 ...