⑴ 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 $
管道符是另一種用法,這是用「標准輸入輸出」給命令做數據。
但要注意,這一般是需要處理的數據,不是作為一個程序的參數。第二個命令必須支持管道符輸入數據才行。
參數和管道符提供的數據流是不同的概念。