久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

命令行傳參linux,命令行傳參數(shù)

linux中設(shè)計一個shell腳本程序可以接受命令行輸入的參數(shù)執(zhí)行相應(yīng)的菜單命令

之所以用到命令行參數(shù),關(guān)鍵在于shell腳本需要與運行腳本的人員進行交互。

創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元施秉做網(wǎng)站,已為上家服務(wù),為施秉各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

bash shell提供了命令行參數(shù)添加在命令后面的數(shù)據(jù)值)、命令行選項修改命令行為的單字符值)和直接讀取鍵盤輸入。

1、命令行參數(shù)

向shell腳本傳遞數(shù)據(jù)的最基本方式是使用命令行參數(shù)。

1)讀取參數(shù)

讀取輸入的參數(shù)的變量為位置參數(shù),位置參數(shù)通過標(biāo)準(zhǔn)數(shù)字表示,

其中$0為程序名稱,$1為第一個參數(shù),$2為第二個參數(shù),依次類推,直到$9為第九個參數(shù)。

shell腳本自動將命令行參數(shù)賦值給各個位置變量。

同時輸入多個參數(shù)可以是數(shù)值也可以是字符串)時,必須使用空格分隔要想在參數(shù)值中包含空格,就必須使用單引號或雙引號)

當(dāng)參數(shù)多于9個后,必須在shell腳本內(nèi)使用大括號將變量括起來,如${10}。從而可以使用任意個參數(shù)。

2)讀取程序名稱

傳遞給變量$0的字符串實際上是程序的路徑根據(jù)調(diào)用方法決定是相對還是絕對路徑)。

使用basename命令可以去掉路徑前綴,只獲得程序名稱名字中不 可以有空格)。

3)測試腳本

當(dāng)腳本認為應(yīng)該包含參數(shù),卻實際上沒有數(shù)據(jù)時,就會出錯。

好的方法是對參數(shù)進行檢查來保證使用參數(shù)前確實存在數(shù)據(jù),可以使用-n參數(shù)來檢查。

例子:if [ –n “$1” ] then .. else .. fi

2、特殊的參數(shù)變量

用于跟蹤命令行參數(shù)

1)參數(shù)計數(shù)

使用特殊變量$#測試執(zhí)行腳本時包含的命令行參數(shù)個數(shù)。腳本中任何位置都可以 使用$#

例子:if [ $# –ne 2 ] 即可測試參數(shù)個數(shù)

可以使用${!#}來返回最后一個命令行參數(shù)當(dāng)無參數(shù)時,$#為0,而${!#}為程序名)

2)獲取所有數(shù)據(jù)

變量$*將命令行中提供的所有參數(shù)作為一個單詞處理,它將多個參數(shù)看成 一個參數(shù)。

變量$@將命令行中提供的所有參數(shù)作為同一個字符串中的多個單詞處理。 允許對其中的值進行迭代一般使用for),分隔開不同參數(shù)

3、移位

shift命令能夠改變命令行參數(shù)的相對位置。默 認將每個參數(shù)變量左移一個位置變量$0不變,把$1丟棄,注意不可以恢復(fù)了?。?/p>

在不清楚參數(shù)數(shù)目情況下,這是一個迭代參數(shù)的好辦法。

可以為shift提供一個參數(shù),來實現(xiàn)多位移變化。

4、處理選項

選項是由破折號引導(dǎo)的單個字母,用于更改命令的行為。

1,找出選項

1)處理簡單選項

可以使用處理命令行參數(shù)相同的方法處理選項,抽取時使用case語句進行判斷是否符合選項格式。

2)從參數(shù)中分離選項

同時使用選項和參數(shù)時,可以使用--指示選項列表的結(jié)束。發(fā)現(xiàn)--后,shell就知道后面的是普通參數(shù)了,停止使用case處理選項。

3)處理帶值的選項

選項后緊跟參數(shù)值,一種方法是在case中對應(yīng)選項后使用shift和讀后一位參數(shù)的方法處理。更好的方法如 下:

2,使用getopt命令

getopt命令在處理選項和參數(shù)時非常方便。它對參數(shù)進行重新組 織,以便于解析

1)命令格式

getopt可以接受任意形式的選項和參數(shù)列表,并自動將它們轉(zhuǎn)換為適當(dāng)?shù)母袷健?/p>

命令格式為: getopt options optstring parameters

選項字符串(opstring)用于定義命令行中的有效選項字母,以及哪些選項字母需要參數(shù)值。

2)腳本中使用getopt

需要使用set命令將現(xiàn)有的命令行選項和參數(shù)替換為getopt命令生成的 格式化形式。

需要將原始腳本命令行參數(shù)送給getopt命令,然后將getopt命令輸出送給set命令,如下:set – `getopts –q ab:cd “$@”`

但是getopt命令不能很好的處理帶有空格的參數(shù)值,它將空格解析為參數(shù)分隔符,而不是將雙引號引起來的兩個 值合并成一個參數(shù)。解決辦法如下:

3)更高級的getopts命令

getopts命令順序的對現(xiàn)有的shell參數(shù)變量進行處理,每調(diào)用一次,只處理命令中檢測到的參數(shù)中的一個。處理完所有參數(shù)后,以大于0的退出 狀態(tài)退出。

非常適宜于在循環(huán)中解析所有命令行參數(shù)

格式為: getopts optstring variable

$optarg包含需要參數(shù)值的選項要使用的值,$optind包含getopts停止處理時在參數(shù)列表中的位置。

注意:當(dāng)getopts處理時,會將選項前的-去掉,所以對應(yīng)的case中不需要破折號。

好的特性:

1)可以在參數(shù)值中包含空格

2)選項字母和參數(shù)值中間可以沒有空格

3)將在命令行中找到的未定義的選項都綁定為單一的輸出——問號

5、標(biāo)準(zhǔn)化選項

有一些字母選項具有標(biāo)準(zhǔn)含義。最好按照標(biāo)準(zhǔn)含義定義選項意義

-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y

6、獲取用戶輸入

當(dāng)需要在執(zhí)行過程中獲得執(zhí)行腳本人員的輸入,使用read命令

1)基本讀取

read命令接受標(biāo)準(zhǔn)輸入或其他文件描述符輸入。讀入后將數(shù)據(jù)放入 一個標(biāo)準(zhǔn)變量中。

-p 允許在read命令行中直接指定一個提示。

可以指定多個變量,也可以不指定將放置在reply環(huán)境變量中)

2)計時

使用-t指定一個計時器,計時數(shù)滿還未輸入,read返回一個非0的退出狀態(tài)。

使用-n指定輸入的字符個數(shù),輸入達到預(yù)定數(shù)目時,就自動結(jié)束輸入

3)默讀

使用-s使輸入不顯示在終端例如輸入密碼)

4)讀取文件

最常用的方法是使用cat命令,并通過管道傳給包含read的while語句。

求 linux下 c++高手,命令行傳參數(shù)的題,

GNU/Linux的命令行選項有兩種類型:短選項和長選項,前者以 '-' 作為前導(dǎo)符,后者以 '--' 作為前導(dǎo)符

。比如有一個命令:

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

在GNU/Linux系統(tǒng),對這種情況的一種合理解釋是:

a是短選項,帶一個參數(shù)vv;

add是長選項,無參數(shù);

b是短選項,無參數(shù);

file是長選項,帶一個參數(shù)a.txt;

b.txt是參數(shù);

-是參數(shù),通常表示標(biāo)準(zhǔn)輸入,stdin;

--是一個指示符,表明停止掃描參數(shù),其后所有部分都是參數(shù),而不是選項;

-e是參數(shù);

c.txt是參數(shù)

為了簡化程序設(shè)計,有幾個庫函數(shù)可以優(yōu)雅地分析命令行參數(shù),原型如下:

#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);

我們先看看用于分析短參數(shù)的getopt函數(shù)。參數(shù)含義如下:

argc, argv是從main函數(shù)獲取的參數(shù),原樣傳給getopt;

optstring指示如何分析參數(shù)。

關(guān)于optstring,還有幾點說明:

如果選項帶參數(shù),該選項后接冒號,比如上例中optstring為"a:b",指示a帶參數(shù),b沒有參數(shù);

如果選項帶可選參數(shù),該選項后接兩個冒號,比如"a::b",表明a可能有參數(shù),也可能沒有;

如果optstring的開頭字符為':',表明如果指明選項帶參數(shù),而實際命令行沒有參數(shù)時,getopt返回':'而不是'?'(默認情況下返回'?',和無法識別的參數(shù)返回一樣);

如果optstring的開頭字符為'+',表明一但遇到一個無選項參數(shù),馬上停止掃描,隨后的部分當(dāng)作參數(shù)來解釋;

如果optstring的開頭字符為'-',表明如果遇到無選項參數(shù),則把它當(dāng)作選項1(不是字符'1')的參數(shù)

該函數(shù)每解析完一個選項,就返回該選項字符。

如果選項帶參數(shù),參數(shù)保存在optarg中。如果選項帶可選參數(shù),而實際無參數(shù)時,optarg為NULL。

當(dāng)遇到一個不在optstring指明的選項時,返回字符‘?’。如果在optstring指明某選項帶參數(shù)而實際沒有參數(shù)時,返回字符‘?’或者字符‘:’,視optstring的第一個字符而定。這兩種情況選項的實際值被保存在optopt中。

當(dāng)解析錯誤時,如果opterr為1則自動打印一條錯誤消息(默認),否則不打印。

當(dāng)解析完成時,返回-1。

每當(dāng)解析完一個argv,optind就會遞增。如果遇到無選項參數(shù),getopt默認會把該參數(shù)調(diào)后一位,接著解析下一個參數(shù)。如果解析完成后還有無選項的參數(shù),則optind指示的是第一個無選項參數(shù)在argv中的索引。

函數(shù)getopt_long()的工作方式類似于getopt(),不過它還能接收長選項。在接收長選項之前,我們必須定義個一個結(jié)構(gòu)體數(shù)組變量longopts,指明我們希望獲取的長選項。

struct option {

const char *name;

int has_arg;

int *flag;

int val;

};

含義如下:

name指明長選項的名稱;

has_arg指明該選項是否帶參數(shù),1為是,0為否,2為可選;

flag指明長選項如何返回,如果flag為NULL,則getopt_long返回val。否則返回0,flag指向一個值為val的變量。如果該長選項沒有發(fā)現(xiàn),flag保持不變;

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

option數(shù)組的最后一個元素必須全部填充0.

getopt_long的最后一個參數(shù)longindex在函數(shù)返回時指向被搜索到的選項在longopts數(shù)組中的下標(biāo)。longindex可以為NULL,表明不需要返回這個值。

getopt_long_only類似于getopt_long,但是它把'-'開頭的選項當(dāng)作長選項來處理。如果該選項與長選項不匹配,而與短選項匹配,則可以作為短選項解析。

在短選項找到的時候,getopt_long和getopt_long_only的表現(xiàn)和getopt一樣。如果長選項找到了,如果flag為 NULL,返回val,否則返回0。錯誤情況的處理和getopt一樣,只是返回'?'時還可能是別的情況引起的:選項含糊不明確或者無關(guān)參數(shù)。

我們拿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。

希望你能看懂。。。

linux編譯的main函數(shù)的參數(shù)是怎么傳值進來

方法1.

C/C++語言中的main函數(shù),經(jīng)常帶有參數(shù)argc,argv,如下:

int main(int argc, char** argv)

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

這兩個參數(shù)的作用是什么呢?argc 是指命令行輸入?yún)?shù)的個數(shù),argv存儲了所有的命令行參數(shù)。假如你的程序是hello.exe,如果在命令行運行該程序,(首先應(yīng)該在命令行下用 cd 命令進入到 hello.exe 文件所在目錄) 運行命令為:

hello.exe Shiqi Yu

那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。

下面的程序演示argc和argv的使用:

怎樣通過命令行給linux傳輸文件

怎樣通過命令行給linux傳輸文件,方法如下

一、從服務(wù)器下載文件到本機

1、修改文件所屬

由于只能下載文件所屬為自己的文件,所以要做修改文件所屬的操作。

chown hudelei /opt/logs/tomcat/app/tomcat_stk_nm/stk-time.log

2、下載到本機

scp hi@10.10.30.10:/opt/logs/tomcat/app/tomcat_stk_nm/stk-time.log /Users/hvvi/Desktop

3、輸入密碼

二、上傳文件夾到服務(wù)器

1、scp -r /Users/hddvvi/Desktop/load hi@10.10.30.10:/opt/logs/tomcat/app/tomcat_stk_nm/

注意:加上 -r,否則會報錯:not a regular file

2、輸入密碼3、文件移動上上層 mv filename.java 。。/

注:本文使用的是mac本機和linux服務(wù)器。

新聞標(biāo)題:命令行傳參linux,命令行傳參數(shù)
網(wǎng)站網(wǎng)址:http://sd-ha.com/article10/hcoego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、Google云服務(wù)器、網(wǎng)站維護、企業(yè)建站、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)