往shell脚本中传入参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了往shell脚本中传入参数相关的知识,希望对你有一定的参考价值。
在shell脚本中,我想通过nohup调用某函数,调用该函数要通过shell脚本传入两个参数
这样写nohup XXX $1 $2 &有什么问题?
$# ----传递给程序的总的参数数目
$? ----上一个代码或者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脚本中传入参数的主要内容,如果未能解决你的问题,请参考以下文章