日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell 第二天

發布時間:2025/5/22 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell 第二天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1. Shell ?引號

shell 引用類型:

“”雙引號

‘’單引號

·· ? 反引號

\ ? 反斜杠

1.1 單引號,雙引號

單引號雙引號區別: ?除了類似作用,關鍵區別如下:

[nxuser@PSBJ-0-0-0 ~]$ BOY='boy' [nxuser@PSBJ-0-0-0 ~]$ echo $BOY boy [nxuser@PSBJ-0-0-0 ~]$ echo 'the $BOY did well' the $BOY did well [nxuser@PSBJ-0-0-0 ~]$ echo $BOY boy [nxuser@PSBJ-0-0-0 ~]$ echo "the $BOY did well" the boy did well [nxuser@PSBJ-0-0-0 ~]$



單引號與雙引號類似,不同的是 s h e l l 會忽略任何引用值。換句話說,如果屏蔽了其特殊
含義,會將引號里的所有字符,包括引號都作為一個字符串。

1.2 反引號

[nxuser@PSBJ-0-0-0 ~]$ echo date date [nxuser@PSBJ-0-0-0 ~]$ echo "date" date [nxuser@PSBJ-0-0-0 ~]$ echo 'date' date [nxuser@PSBJ-0-0-0 ~]$ echo `date` Thu Apr 17 10:51:01 CST 2014



s h e l l 將反引號中的內容作為一個系統命令,并 執行其內容。

1.3 反斜線

如果下一個字符有特殊含義,反斜線防止 s h e l l 誤解其含義,即屏蔽其特殊含義。下述字
符包含有特殊意義: & * + ^ $ ` " | ?

2 執行腳本的三種方式

./shell-script.sh其實就是fork的方式去運行一個程序(這個程序就是shell腳本)。所以這個新的shell腳本在運行時擁有父進程的一個環境變量表的拷貝。所以我們知道了,這種默認的shell腳本執行是會創建出新的進程的。


而另外還有兩種用法,是不會創建出子進程的,那就是source和exec。
和fork方式不同,source和exec則都會在當前的進程內去執行相應的程序。所以就不存在環境變量的拷貝問題,該shell腳本的執行直接會影響 到當前的環境變量表。而且exec還有個特別之處就是,當它執行的程序完成之后,所在的進程也會退出。比如在Gnome的terminal中用exec command之后,當前的terminal就會退出,這個有時候還很有用。source還有一個很有趣的縮寫,也就是一個點。比如. ./shell-script.sh,是不是很奇怪。


總結一下


? ? ? ? ? ? ? ? ? ? ? New Process ? ? ? ? ? ?Terminate Current/Parent


-------------------------------------------------------


fork ? ? ? ? ? ? ? ? ? Y ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?N


source ? ? ? ? ? ? N ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?N


exec ? ? ? ? ? ? ? ? N ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Y

假設腳本為a.sh,則要運行該腳本,有以下方式


1 給腳本加上執行權限chmod u+x a.sh, 而后就可以直接用全路徑來執行腳本了,比如當前文件夾下用./a.sh, 如果腳本所在目錄在PATH環境變量之中, 則直接用a.sh即可


2 sh/bash a.sh的路徑,這種情況不需要腳本具有執行權限.


以上兩種情況中,腳本中$0都是a.sh,都是在shell的子進程中運行的.


3 source a.sh的路徑


4 . a.sh的路徑


以上兩種情況都是腳本在當前shell的進程中運行,所以$0都是bash/sh, 區別在于, source不是posix shell的內置命令,所以3在sh中實際上是不能運行的,在bash中可以. 而.則無論在bash還是posix shell中都是可以用來載入并執行腳本. 所以, 相對而言, 應該是4 更加具有移植性.

[nxuser@PSjamsBond-0-0-0 automatictests]$ ./test-FUNC-PRES-08.sh SIPP_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 REPORT_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 CURL_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 RUN_TIME_DIRECTORY /tmp/test-FUNC-PRES-08 SNMP_COUNTERS_DIRECTORY /tmp/test-FUNC-PRES-08



[nxuser@PSjamsBond-0-0-0 automatictests]$ sh test-FUNC-PRES-08.sh SIPP_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 REPORT_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 CURL_LOG_DIRECTORY /tmp/test-FUNC-PRES-08 RUN_TIME_DIRECTORY /tmp/test-FUNC-PRES-08 SNMP_COUNTERS_DIRECTORY /tmp/test-FUNC-PRES-08



1、執行腳本時是在一個子shell環境運行的,腳本執行完后該子shell自動退出;


2、一個shell中的系統環境變量會被復制到子shell中(用export定義的變量);


3、一個shell中的系統環境變量只對該shell或者它的子shell有效,該shell結束時變量消失
(并不能返回到父shell中)。


3、不用export定義的變量只對該shell有效,對子shell也是無效的。

轉載于:https://my.oschina.net/hanruikai/blog/223441

總結

以上是生活随笔為你收集整理的Shell 第二天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。