往shell脚本中传入参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了往shell脚本中传入参数相关的知识,希望对你有一定的参考价值。

在shell脚本中,我想通过nohup调用某函数,调用该函数要通过shell脚本传入两个参数
这样写nohup XXX $1 $2 &有什么问题?

参考技术A   参数如下:
  $# ----传递给程序的总的参数数目
  $? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
  $* ----传递给程序的所有参数组成的字符串。
  $n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ...   $0 ----当前程序的名称
  $@----以"参数1" "参数2" ... 形式保存所有参数
  $$ ----本程序的(进程ID号)PID
  $! ----上一个命令的PID
参考技术B 大概是你的B程序执行结束了,造成检索不到的情况 参考技术C 你的意思是nohup是一个脚本,然后调用子脚本XXX,子脚本需要两个参数$1和$2么?追问

xxx是在脚本中被调用的可执行文件,这两个参数是待用这个可执行文件需要传入的参数,然后这个可执行文件是在一个脚本中用nohup调用的。
就是在脚本A中有一个语句是nohup XXX $1 $2 &
其中XXX是可执行文件

追答

那你应该这样:
在nohup.sh脚本中加入 /路径/xxx $1 $2 这条命令
然后执行这个脚本 ./nohup.sh 1 2 (1为想传给xxx的第一个参数,2为想传给xxx的第二个参数)

追问

脚本不是nohup脚本
是脚本test.sh里面有个语句是nohup B $1 $2 &
其中B是带路径的。
我用的是ps -fu xxx|grep B来看B是否调用成功的
还是说我ps这句话写的有问题?
还是说可以用其他方法在shell中后台调用有传入参数的可执行文件

实际上执行后的结果是B这个可执行文件是调用成功的,但是我用下面ps的那个查还是显示没有调用成功的显示

追答

哦,我明白你的意思了,nohup是后台执行命令,那条语句是没有错的
应该是ps命令那里的问题,你试试ps -axfu | grep B

本回答被提问者采纳

shell脚本之判断文本类型2 (参数传入脚本)

技术图片

#!/bin/bash
if [ "$#" -lt 1 ]; then                                    #判断脚本参数个数,当参数个数小于1时,给出脚本执行方式
        echo "Usage:./judge_file_arg.sh ARG1 [ARG2...]"
        exit 2                                                  #定义错误退出码
fi
if [ ! -e "$1" ]; then                                     #判断给出的文件是否存在,不存在推出脚本
        echo "no such file"
        exit 3
fi
if [ -f "$1" ]; then                                       #判断文件是否为普通文本
        echo "This is normal file"
elif [ -d "$1" ]; then                                   #判断是否为目录
        echo "This  is directory"                               
else
        echo "This  is other type file"
fi

以上是关于往shell脚本中传入参数的主要内容,如果未能解决你的问题,请参考以下文章

调用shell脚本 怎么像调用java方法那样传入参数

linux shell 脚本中几个特殊参数含义

如何给shell脚本传参数

shell脚本中如何传入参数

如何在shell中执行一个模块,这个模块需要传入参数

spark-shell 执行脚本并传入参数