Linux編程中在命令行啟動另一個可執(zhí)行文件或調(diào)用命令用system函數(shù)最簡單了,這個函數(shù)原理是在你編寫的那個程序的內(nèi)部啟動另一個程序或命令,從而創(chuàng)建一個新進程,并等待這個進程執(zhí)行完畢退出。如果正常執(zhí)行,system函數(shù)將返回被執(zhí)行程序或命令的退出碼;如果無法運行這個程序或命令,將返回錯誤代碼127;如果是其他錯誤,返回-1。這個函數(shù)的原型是:
十載的南雄網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整南雄建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“南雄網(wǎng)站設(shè)計”,“南雄網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
#include stdlib.h
int system(const char *string);
參數(shù)string是將要執(zhí)行的程序文件名或路徑,如果是啟動一個命令就是一個命令字符串。
還有一種執(zhí)行外部程序的方法是exec系列函數(shù),一般是在fork的子進程里面調(diào)用exec系列函數(shù),那主進程里直接調(diào)用exec系列不行嗎,為什么要fork再在子進程里調(diào)用呢?因為exec系列的函數(shù)(包括execl函數(shù))都是將當前進程替換成新進程,也就是說新進程啟動后原來的進程就不存在了,exec系列函數(shù)后面的那些代碼就不會再執(zhí)行了。如果你不放在fork子進程里面,那主進程在執(zhí)行execl函數(shù)后就完全不存在了,所以exec系列函數(shù)的使用都是先fork然后在子進程里面調(diào)用。因為exec系列函數(shù)都要使用fork調(diào)用,所以我一般是用system函數(shù)。
"首先腳本需要有執(zhí)行權(quán)限:chmod u x file.sh;執(zhí)行腳本有三種方法:1. ./file.sh:特點:開啟bash子進程來執(zhí)行,也就是開啟額外的進程來進行,不影響原進程的變量、配置等2. bash file.sh特點:和./file.sh相同
3. source file.sh 或者 . file.sh 特點:在原bash進程中執(zhí)行腳本。第三種方法主要用于在腳本中切換用戶su、切換目錄cd等命令。source 和 . 命令是相同的。你可以搜索 source
補充,如何查看腳本運行是否開啟了bash子進程vim file.sh寫入#!/bin/bash;#echo $$命令會輸出bash進程ID;echo $$;保存并賦予可執(zhí)行權(quán)限chmod u x file.sh;在你的shell中輸入,echo $$ 屏幕輸出4176;./file.sh 屏幕輸出3600;bash file.sh 屏幕輸出3984;source file.sh 屏幕輸出4176 和 你直接在shell中輸出的一樣,說明是在同一個bash進程,另外你是感興趣的話可以看下劉遄老師寫的《Linux就該這么學(xué)》作為入門的書籍,覺得不錯的話采納下哦
"
Linux運行sql腳本的具體操作步驟如下:
1、使用shell工具登陸到安裝postgresql的服務(wù)器,切換到postgres用戶,postgresql默認的操作用戶,命令是:su - postgres,查看當前路徑是/var/lib/psql,創(chuàng)建一個test.sql腳本文件,命令是:vim test.sql。
2、sql腳本內(nèi)容是:create table test (id int not null primary key,name text);insert into test valus(1, 't1');
3、執(zhí)行test.sql腳本,命令是:psql -f test.sql
這里是因為postgresql安裝本機上,在第一步中我們切換到了postgres用戶,因此這里默認就是postgres用戶來操作,不用帶上用戶名和密碼。執(zhí)行結(jié)果如下,可以看到有兩個提示:
create table
insert 0 1
執(zhí)行完成后,我們登入數(shù)據(jù)庫,命令是:psql
4、進入psql交互式命令行后,我們執(zhí)行兩個查看命令:\d
可以看到表test確實已經(jīng)創(chuàng)建成功,然后執(zhí)行命令:\d test
可以看到表中字段是id和name,和我們創(chuàng)建語句中內(nèi)容一樣,說明第一條語句執(zhí)行成功。
5、查看表中數(shù)據(jù),命令是:select * from test;
顯示出來的值是1,t1,說明第二條執(zhí)行語句也執(zhí)行成功,說明test.sql腳本執(zhí)行成功。
6、默認是postgres用戶,本機操作是,不需要用戶和密碼,現(xiàn)在我們來試試操作遠程linux服務(wù)器上的postgresql,也就是說執(zhí)行本地的腳本文件,在遠程服務(wù)器上創(chuàng)建表。如下面圖中所示,命令是:psql -U test1 -h 192.168.1.194 -f test.sql,輸入對應(yīng)用戶的密碼。
7、登陸到這個遠程服務(wù)器上,命令是:psql -U test -h 192.168.194
執(zhí)行查看命令:\d,\d test
最后查詢數(shù)據(jù)庫:select * from test;結(jié)果和上面都一致。
在 Linux 命令行中運行 PHP 代碼
PHP的語法和C、Java以及帶有一些PHP特性的Perl變成語言中的語法十分相似,它當下大約正被2.6億個網(wǎng)站所使用,當前最新的穩(wěn)定版本是PHP版本5.6.10。
PHP是HTML的嵌入腳本,它便于開發(fā)人員快速寫出動態(tài)生成的頁面。PHP主要用于服務(wù)器端(而Javascript則用于客戶端)以通過HTTP生成動態(tài)網(wǎng)頁,然而,當你知道可以在Linux終端中不需要網(wǎng)頁瀏覽器來執(zhí)行PHP時,你或許會大為驚訝。
本文將闡述PHP腳本語言的命令行方面。
1. 在安裝完P(guān)HP和Apache2后,我們需要安裝PHP命令行解釋器。
復(fù)制代碼 代碼如下:
# apt-get install php5-cli
[Debian 及類似系統(tǒng)]# yum install php-cli
[CentOS 及類似系統(tǒng)]
接下來我們通常要做的是,在 /var/www/html (這是 Apache2 在大多數(shù)發(fā)行版中的工作目錄)這個位置創(chuàng)建一個內(nèi)容為 ?php phpinfo(); ? ,名為 infophp.php 的文件來測試(PHP是否安裝正確),執(zhí)行以下命令即可。
復(fù)制代碼 代碼如下:
# echo '?php phpinfo(); ?' /var/www/html/infophp.php
然后,將瀏覽器訪問 ,這將會在網(wǎng)絡(luò)瀏覽器中打開該文件。
檢查PHP信息
不需要任何瀏覽器,在Linux終端中也可以獲得相同的結(jié)果。在Linux命令行中執(zhí)行 /var/www/html/infophp.php ,如:
復(fù)制代碼 代碼如下:
# php -f /var/www/html/infophp.php
從命令行檢查PHP信息
由于輸出結(jié)果太大,我們可以通過管道將上述輸出結(jié)果輸送給 less 命令,這樣就可以一次輸出一屏了,命令如下:
復(fù)制代碼 代碼如下:
# php -f /var/www/html/infophp.php | less
檢查所有PHP信息
這里,‘-f‘選項解析并執(zhí)行命令后跟隨的文件。
2. 我們可以直接在Linux命令行使用 phpinfo() 這個十分有價值的調(diào)試工具而不需要從文件來調(diào)用,只需執(zhí)行以下命令:
復(fù)制代碼 代碼如下:
# php -r 'phpinfo();'
PHP調(diào)試工具
這里,‘-r‘ 選項會讓PHP代碼在Linux終端中不帶 和 標記直接執(zhí)行。
3. 以交互模式運行PHP并做一些數(shù)學(xué)運算。這里,‘-a‘ 選項用于以交互模式運行PHP。
復(fù)制代碼 代碼如下:
# php -aInteractive shellphp echo 2+3;5php echo 9-6;3php
echo 5*4;20php echo 12/3;4php echo 12/5;2.4php echo
2+3-1;4php echo 2+3-1*3;2php exit
輸入 ‘exit‘ 或者按下 ‘ctrl+c‘ 來關(guān)閉PHP交互模式。
啟用PHP交互模式
4. 你可以僅僅將PHP腳本作為shell腳本來運行。首先,創(chuàng)建在你當前工作目錄中創(chuàng)建一個PHP樣例腳本。
復(fù)制代碼 代碼如下:
# echo -e '#!/usr/bin/php\n?php phpinfo(); ?' phpscript.php
注意,我們在該PHP腳本的第一行使用 #!/usr/bin/php ,就像在shell腳本中那樣( /bin/bash )。第一行的 #!/usr/bin/php 告訴Linux命令行用 PHP 解釋器來解析該腳本文件。
其次,讓該腳本可執(zhí)行:
復(fù)制代碼 代碼如下:
# chmod 755 phpscript.php
接著來運行它,
復(fù)制代碼 代碼如下:
# ./phpscript.php
5. 你可以完全靠自己通過交互shell來創(chuàng)建簡單函數(shù),這你一定會被驚到了。下面是循序漸進的指南。
開啟PHP交互模式。
復(fù)制代碼 代碼如下:
# php -a
創(chuàng)建一個函數(shù),將它命名為 addition 。同時,聲明兩個變量 $a 和 $b 。
復(fù)制代碼 代碼如下:
php function addition ($a, $b)
使用花括號來在其間為該函數(shù)定義規(guī)則。
復(fù)制代碼 代碼如下:
php {
定義規(guī)則。這里,該規(guī)則講的是添加這兩個變量。
復(fù)制代碼 代碼如下:
php { echo $a + $b;
所有規(guī)則定義完畢,通過閉合花括號來封裝規(guī)則。
復(fù)制代碼 代碼如下:
php {}
測試函數(shù),添加數(shù)字4和3,命令如下:
復(fù)制代碼 代碼如下:
php var_dump (addition(4,3));
樣例輸出
復(fù)制代碼 代碼如下:
7NULL
你可以運行以下代碼來執(zhí)行該函數(shù),你可以測試不同的值,你想來多少次都行。將里頭的 a 和 b 替換成你自己的值。
復(fù)制代碼 代碼如下:
php var_dump (addition(a,b));
php var_dump (addition(9,3.3));
樣例輸出
復(fù)制代碼 代碼如下:
12.3NULL
創(chuàng)建PHP函數(shù)
你可以一直運行該函數(shù),直至退出交互模式(ctrl+z)。同時,你也應(yīng)該注意到了,上面輸出結(jié)果中返回的數(shù)據(jù)類型為 NULL。這個問題可以通過要求 php 交互 shell用 return 代替 echo 返回結(jié)果來修復(fù)。
只需要在上面的函數(shù)的中 ‘echo‘ 聲明用 ‘return‘ 來替換
替換
復(fù)制代碼 代碼如下:
php { echo $a + $b;
為
復(fù)制代碼 代碼如下:
php { return $a + $b;
剩下的東西和原理仍然一樣。
這里是一個樣例,在該樣例的輸出結(jié)果中返回了正確的數(shù)據(jù)類型。
PHP函數(shù)
永遠都記住,用戶定義的函數(shù)不會從一個shell會話保留到下一個shell會話,因此,一旦你退出交互shell,它就會丟失了。
當前名稱:linux調(diào)用腳本命令行 linux腳本運行命令
網(wǎng)站鏈接:http://aaarwkj.com/article22/hhpgjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站排名、網(wǎng)頁設(shè)計公司、虛擬主機、網(wǎng)站改版、軟件開發(fā)
聲明:本網(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)