导航:首页 > 程序命令 > linux命令参数传递参数

linux命令参数传递参数

发布时间:2022-08-09 08:17:50

linux下怎样向交到后台作业的脚本传递参数

sh 绝对路径/xxx.sh 参数1 参数2 参数3........参数n

---------------------------------------------------------------------------------
如果你保存临时文件的话,可以使用xargs
比如脚本文件为1.sh,而参数保存在args文件中,用一个命令得到参数内容
cat args
那么最后可以这样执行
cat args |xargs sh 1.sh

如果不打算保存临时文件,那你只好在脚本中写清楚要如何调用,参数有几个。
比如你使用2.sh调用1.sh,在2.sh 中写清楚
1.sh $arg1 $arg2这样就可以了。
当然脚本中的arg1,arg2也可以是最初的第一个脚本调用传递进来的,也可以是硬编码写死的。

⑵ linux编译的main函数的参数是怎么传值进来

方法1.
C/C++语言中的main函数,经常带有参数argc,argv,如下:
int main(int argc, char** argv)

int main(int argc, char* argv[])

这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:
hello.exe Shiqi Yu

那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
下面的程序演示argc和argv的使用:

⑶ 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)

sh 绝对路径/xxx.sh 参数1 参数2 参数3........参数n

---------------------------------------------------------------------------------
如果你保存临时文件的话,可以使用xargs
比如脚本文件为1.sh,而参数保存在args文件中,用一个命令得到参数内容
cat args
那么最后可以这样执行
cat args |xargs sh 1.sh

如果不打算保存临时文件,那你只好在脚本中写清楚要如何调用,参数有几个。
比如你使用2.sh调用1.sh,在2.sh 中写清楚
1.sh $arg1 $arg2这样就可以了。
当然脚本中的arg1,arg2也可以是最初的第一个脚本调用传递进来的,也可以是硬编码写死的。

⑷ linux 系统调用时参数是怎么传递的

sh 绝对路径/xxx.sh 参数1 参数2 参数3........参数n --------------------------------------------------------------------------------- 如果你保存临时文件的话,可以使用xargs 比如脚本文件为1.sh,而参数保存在args文件中,用一个命令得到参数内容 cat args 那么最后可以这样执行 cat args xargs sh 1.sh 如果不打算保存临时文件,那你只好在脚本中写清楚要如何调用,参数有几个。 比如你使用2.sh调用1.sh,在2.sh 中写清楚 1.sh $arg1 $arg2这样就可以了。 当然脚本中的arg1,arg2也可以是最初的第一个脚本调用传递进来的,也可以是硬编码写死的。

⑸ linux中有哪些方法把: 一个命令的输出, 作为另一个命令的参数

用pipe管道符"|"
例如rpm -qa | grep httpd
就是先用rpm -qa 查询所有已经安装的软件包,再通过| 传递给grep,过滤出名称中带有httpd的软件包,这样就能验证linux下是否安装了httpd。有了,就能使用apache服务。
rpm -qa | grep lftp,也是,可以验证是否安装了ltfp。

⑹ 求 linux下 c++高手,命令行传参数的题,

GNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符

。比如有一个命令:

$ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt

在GNU/Linux系统,对这种情况的一种合理解释是:

a是短选项,带一个参数vv;

add是长选项,无参数;

b是短选项,无参数;

file是长选项,带一个参数a.txt;

b.txt是参数;

-是参数,通常表示标准输入,stdin;

--是一个指示符,表明停止扫描参数,其后所有部分都是参数,而不是选项;

-e是参数;

c.txt是参数

为了简化程序设计,有几个库函数可以优雅地分析命令行参数,原型如下:

#include <unistd.h>

int getopt(int argc, char * const argv[],

const char *optstring);

extern char *optarg;

extern int optind, opterr, optopt;

#define _GNU_SOURCE

#include <getopt.h>

int getopt_long(int argc, char * const argv[],

const char *optstring,

const struct option *longopts, int *longindex);

int getopt_long_only(int argc, char * const argv[],

const char *optstring,

const struct option *longopts, int *longindex);

我们先看看用于分析短参数的getopt函数。参数含义如下:

argc, argv是从main函数获取的参数,原样传给getopt;

optstring指示如何分析参数。

关于optstring,还有几点说明:

如果选项带参数,该选项后接冒号,比如上例中optstring为"a:b",指示a带参数,b没有参数;

如果选项带可选参数,该选项后接两个冒号,比如"a::b",表明a可能有参数,也可能没有;

如果optstring的开头字符为':',表明如果指明选项带参数,而实际命令行没有参数时,getopt返回':'而不是'?'(默认情况下返回'?',和无法识别的参数返回一样);

如果optstring的开头字符为'+',表明一但遇到一个无选项参数,马上停止扫描,随后的部分当作参数来解释;

如果optstring的开头字符为'-',表明如果遇到无选项参数,则把它当作选项1(不是字符'1')的参数

该函数每解析完一个选项,就返回该选项字符。

如果选项带参数,参数保存在optarg中。如果选项带可选参数,而实际无参数时,optarg为NULL。

当遇到一个不在optstring指明的选项时,返回字符‘?’。如果在optstring指明某选项带参数而实际没有参数时,返回字符‘?’或者字符‘:’,视optstring的第一个字符而定。这两种情况选项的实际值被保存在optopt中。

当解析错误时,如果opterr为1则自动打印一条错误消息(默认),否则不打印。

当解析完成时,返回-1。

每当解析完一个argv,optind就会递增。如果遇到无选项参数,getopt默认会把该参数调后一位,接着解析下一个参数。如果解析完成后还有无选项的参数,则optind指示的是第一个无选项参数在argv中的索引。

函数getopt_long()的工作方式类似于getopt(),不过它还能接收长选项。在接收长选项之前,我们必须定义个一个结构体数组变量longopts,指明我们希望获取的长选项。

struct option {

const char *name;

int has_arg;

int *flag;

int val;

};

含义如下:

name指明长选项的名称;

has_arg指明该选项是否带参数,1为是,0为否,2为可选;

flag指明长选项如何返回,如果flag为NULL,则getopt_long返回val。否则返回0,flag指向一个值为val的变量。如果该长选项没有发现,flag保持不变;

val指明返回的值,或者需要加载到被flag所指示的变量中。

option数组的最后一个元素必须全部填充0.

getopt_long的最后一个参数longindex在函数返回时指向被搜索到的选项在longopts数组中的下标。longindex可以为NULL,表明不需要返回这个值。

getopt_long_only类似于getopt_long,但是它把'-'开头的选项当作长选项来处理。如果该选项与长选项不匹配,而与短选项匹配,则可以作为短选项解析。

在短选项找到的时候,getopt_long和getopt_long_only的表现和getopt一样。如果长选项找到了,如果flag为 NULL,返回val,否则返回0。错误情况的处理和getopt一样,只是返回'?'时还可能是别的情况引起的:选项含糊不明确或者无关参数。
我们拿Linux手册的一个例子来说事。

#include <stdio.h> /* for printf */

#include <stdlib.h> /* for exit */

#include <getopt.h>

int

main (int argc, char **argv) {

int c;

int digit_optind = 0;

while (1) {

int this_option_optind = optind ? optind : 1;

int option_index = 0;

static struct option long_options[] = {

{"add", 1, 0, 0},

{"append", 0, 0, 0},

{"delete", 1, 0, 0},

{"verbose", 0, 0, 0},

{"create", 1, 0, ’c’},

{"file", 1, 0, 0},

{0, 0, 0, 0}

};

c = getopt_long (argc, argv, "abc:d:012",

long_options, &option_index);

if (c == -1)

break;

switch (c) {

case 0:

printf ("option %s", long_options[option_index].name);

if (optarg)

printf (" with arg %s", optarg);

printf ("\n");

break;

case ’0’:

case ’1’:

case ’2’:

if (digit_optind != 0 && digit_optind != this_option_optind)

printf ("digits occur in two different argv-elements.\n");

digit_optind = this_option_optind;

printf ("option %c\n", c);

break;

case ’a’:

printf ("option a\n");

break;

case ’b’:

printf ("option b\n");

break;

case ’c’:

printf ("option c with value ‘%s’\n", optarg);

break;

case ’d’:

printf ("option d with value ‘%s’\n", optarg);

break;

case ’?’:

break;

default:

printf ("?? getopt returned character code 0%o ??\n", c);

}

}

if (optind < argc) {

printf ("non-option ARGV-elements: ");

while (optind < argc)

printf ("%s ", argv[optind++]);

printf ("\n");

}

exit (0);

}

我们用digit_optind和this_option_optind来跟踪选项012是否在一起,比如选项 -012 和-0 -1 -2 的optind情况是不一样的,前者返回0、1、2时optind相同,而后者optind的值依次大1。

希望你能看懂。。。

⑺ 关于给main函数传递参数问题!!!在Linux环境下, 一个程序main函数有参数,

int main(int argc,char* argv[]);
argv是命令行参数个数 不带参运行 argc值为1

argv是命令行参数
argv[0]代表程序本身
argv[1]代表第一个参数
以此类推

mmap.c编译好之后得到二进制文件mmap

带两个参数 这样 就ok了:
./mmap 1 abcd.txt

程序中

操作系统为main传递的参数 argc 值为3
argv[0] 为 mmap
argv[1]为 1
argv[2] 为abcd.txt
三个参数都是 char*类型

⑻ linux xargs 可以给命令传递多个参数吗

sh-3.2# cat t.sh
echo $1
echo $2
sh-3.2# sh t.sh aa bb
aa
bb

⑼ 对于可执行的linux动态共享库,怎么传递命令行参数一般共享库没有main函数唉,就算自己定义了,

你本身的意图是什么?你可以在将命令行参数传递给你的程序本身,再通过函数调用传递给共享库文件不就好了么

⑽ 如何将Linux命令的结果作为下一个命令的参数

着要看你怎么要这个命令参数了。
一般来说可以用 $(xxxxx) 或者 `xxxxx` (数字1左边的那个引号)做命令的嵌套

jiangtao@Gentoo ~/temp $ date
2013年 03月 07日 星期四 21:44:23 CST
jiangtao@Gentoo ~/temp $ echo 现在时间是:`date`
现在时间是:2013年 03月 07日 星期四 21:44:45 CST
jiangtao@Gentoo ~/temp $ echo 现在时间是:$(date)
现在时间是:2013年 03月 07日 星期四 21:44:57 CST
jiangtao@Gentoo ~/temp $

管道符是另一种用法,这是用“标准输入输出”给命令做数据。
但要注意,这一般是需要处理的数据,不是作为一个程序的参数。第二个命令必须支持管道符输入数据才行。
参数和管道符提供的数据流是不同的概念。

阅读全文

与linux命令参数传递参数相关的资料

热点内容
php开发客户端 浏览:998
theisle测试服怎么搜服务器 浏览:447
广播PDF 浏览:218
单片机编程300例汇编百度 浏览:35
腾讯云连接不上服务器 浏览:223
不能用来表示算法的是 浏览:861
6轴机器人算法 浏览:890
手机主题照片在哪个文件夹 浏览:294
安卓手机后期用什么软件调色 浏览:628
cad修改快捷键的命令 浏览:242
好钱包app怎么登录不了 浏览:859
树莓派都用python不用c 浏览:757
access文件夹树的构造 浏览:662
安卓多指操作怎么设置 浏览:658
linux树形目录 浏览:727
平方根的简单算法 浏览:898
千牛订单页面信息加密取消 浏览:558
单片机自制红外遥控灯 浏览:719
服务器最小配置怎么弄 浏览:853
ibm服务器硬件如何升级 浏览:923