ShellExecute(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
lpParameters的地方就是传递的参数。
接收的应用程序如果是C++开发的话,有一个
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
其中lpCmdLine就是参数。
linux shell 处理用户输入
命令行参数
读取参数,$0程序名,$1第一个参数以此类推,直到$9。第10个参数开始需要用花括号把数字括起来 ${10}
读取程序名,默认$0是读取带路径的程序名,但是有时候只需要脚本名,并不需要路径,这时就可以用basename了,比如:
这样可以根据不同的脚本名执行不同的功能
测试参数,当需要参数而没有跟参数时会报错。所以需要检查数据是不是存在就很有必要,如下所示:
特殊参数变量
参数计数 $# 该变量记录脚本运行时的参数个数,如果要在大括号内使用该参数的话需要把$改为!因为大括号内不能使用美元符。
抓取所有的数据,$和$@可以提供对所有参数的快速访问。$把所有参数当成一个参数,$@会单独处理每个参数。
移动变量 shift 默认左移一个位数,可以在shift后面跟数字修改默认左移位数。shift 2 左移2位。
处理选项
简单的选项
运行结果:
分离参数和选项
此处用破折号来区分选项和参数
处理带值的选项
如上图所示处理带值的选项 -b
getopt 命令,能够识别命令行参数
getopt options optstring parameters
optstring 列出你要在脚本中用到的每个命令行选项字母,然后再每个需要参数值的选项字母后加一个冒号。getopt会基于定义的optstring解析提供的参数。
如图所示: -b 选项需要参数所以b后面有个: 参数是test1 而test2 和test3是参数,用双破折号分开
当有无效参数出现的话会提示错误,如下图所示:
当加上-q选项时会忽略错误信息,如下所示:
注意-q 的位置
脚本中使用getopt
采用set命令 -- 选项会将命令行参数替换成set命令的命令行的值。首先原始的脚本命令行参数传给getopt,然后getopt把输出给set命令。比如下面
set -- `getopt -q ab:cd "$@"` 下面是一个例子:
getopts命令
getopts optstring variable,在optstring前面加个: 可以去掉错误消息。
getopts用到两个环境变量。如果选项需要跟一个参数值,OPTARG环境变量就会保存这个值。OPTIND环境变量保存了参数列表中getopts正在处理的参数位置。
对于未定义的选项统一输出成问号:
其中d是未定义的。
getopts处理每个选项时会将OPTIND环境变量值增一。
使用OPTIND的值和shift命令来移动参数,如下图所示:
其中OPTIND的值是记录参数的位置,移动-1个量正好到达参数的位置。
获得用户输入
基本读取
-n选项会移掉字符串末尾的换行符,允许脚本用户紧跟其后输入数据。
-p 参数可以在read后面跟多个变量,依次赋值
如果read后面不跟变量,那么默认会把收到的数据放到特殊环境变量REPLY中
-t 设置超市时间,单位秒 ,超时后read命令会以非零退出状态码退出
-n后面的数字1 表示直接受一个字符然后就主动退出,不用再按回车键。
-s隐藏输入,事实上数据会被显示,只是read命令将文本颜色设置成跟背景色一样
从文件中读取
执行“nano testsh”创建一个新的shell脚本。
脚本testsh的内容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
给新创建的testsh的脚本赋可执行权限,命令为“chmod 755 testsh”。
执行'/testsh "xiao wang"'命令,可以看到自己编写脚本的结果“the xiao wang are great man!”。
"name=$1"中$1为系统提供的位置参数,$0代表程序的名称,[$1/$2/]从1开始为传递的参数。
linux系统除了提供位置参数还提供内置参数,内置参数如下:
$# ----传递给程序的总的参数数目
$ ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$ ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 $0 ----当前程序的名称
$@----以"参数1" "参数2" 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
js客户端代码Linux服务器东西般说shell脚本并且具备权限情况才 *** 作客户端般说允许直接 *** 作服务器资源否则病毒建议向服务器发送请求调用相应shell达目考虑直接用js *** 作服务器资源
shell中获取参数可以直接使用$1、$2等形式来获取,但这种方式有明显的限制: 每个参数的位置是固定的。 比如如果在设计上 $1是ip地址$2是端口,那在执行时就必须第一个参数是ip第二个参数是端口而不能反过来。
shell提供了getopt和getopts来解析参数, getopt比getopts功能强一些getopts比getopt简单一些; 总体而言getopt和getopts都差强人意。
getopt比getopts强一些复杂一些:能在命令行中单独使用、支持长选项格式、支持选项值可选。更多说明见注释。
执行结果:
参考:
>
以上就是关于急问:用ShellExecute向程序传递一个参数值,在这个调用程序中如何获取这个参数值全部的内容,包括:急问:用ShellExecute向程序传递一个参数值,在这个调用程序中如何获取这个参数值、shell对于用户输入的命令行如何进行处理、如何获取传入给shell脚本的最后一个参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)