shell學習記錄(2)

2021-09-13 10:55:47 字數 1924 閱讀 7780

注意:即使你將整數、小數 賦值給變數,它們也會被視為字串,這一點和大部分的程式語言不同。

variable=value       (沒有空格、tab縮排時可以用)

variable=『value』       (有空格、tab縮排時用;)    (單引號就是直接以字串的形式輸出所有引號裡面的東西)

variable=「value」        (有空格、tab縮排時用;)(兩者區別是雙引號會先解析引號裡的東西,再進行輸出 或別的操作)

最好用雙引號括起來!!!!

它的命名規範和大部分程式語言都一樣:

$  {}

name=「li sir」       (=號左右切記不能有空格!!!

echo $name         (使用乙個定義過的變數,前面需要加  $    符號

echo 「hello $ ,welcome」     (加花括號是為了幫助直譯器識別變數的邊界,推薦給所有變數加上花括號,這是個良好的程式設計習慣!!!

()內的命令可以作為乙個變數賦值給另乙個變數  (常用括號形式的,另一種忽略就好)

我在 code 目錄中建立了乙個名為 log.txt 的文字檔案,用來記錄我的日常工作。下面的**中,使用 cat 命令將 log.txt 的內容讀取出來,並賦值給乙個變數,然後使用 echo 命令輸出。

[mozhiyan@localhost ~]$ cd code

[mozhiyan@localhost code]$ log=$(cat log.txt)

[mozhiyan@localhost code]$ echo $log

[2017-09-10 06:53:22] 嚴長生正在編寫shell教程

[mozhiyan@localhost code]$ log=`cat log.txt`

[mozhiyan@localhost code]$ echo $log

[2017-09-10 06:53:22] 嚴長生正在編寫shell教程

[mozhiyan@localhost code]$

(3)唯讀變數:

使用readonly命令可以將變數定義為唯讀變數,唯讀變數的值不能被改變。

下面的例子嘗試更改唯讀變數,結果報錯:

#!/bin/bash

myurl=""

readonly myurl

myurl=""

執行指令碼,結果如下:

/bin/sh: name: this variable is read only.
(4)刪除變數:unset

使用unset命令可以刪除變數。語法:

unset variable_name
變數被刪除後不能再次使用;unset 命令不能刪除唯讀變數。

舉個例子:

#!/bin/sh

myurl=""

unset myurl

echo $myurl

上面的指令碼沒有任何輸出。

(5)變數型別:

執行shell時,會同時存在三種變數:

1) 區域性變數

區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。

2) 環境變數

所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常執行。必要的時候shell指令碼也可以定義環境變數。

3) shell變數

shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是區域性變數,這些變數保證了shell的正常執行

出處:

shell 學習記錄

1 以兩個破折號 來表示選項結尾的用法,源自system v。自此之後命令列上看起來像選項的任何專案,都將 一視同仁的當成引數處置。上面這個句話是什麼鬼意思?2 shell是別的三種命令 1 內建命令 比如cd echo test 2 shell函式 3 外部命令 shell變數 1 變數名字 字元...

shell學習記錄

1.shell 副檔名 sh 約定標記,告訴系統指令碼需要的直譯器,即哪一種shell 執行shell檔案的三種方法 test.sh bin sh test.sh bin bash test.sh注意 shell變數等號兩邊不能有空格,使用變數的時候加 符號字串擷取 與 刪除左邊字元 保留右邊字元 ...

shell學習記錄

段落 sed 的命令格式 sed command file sed command 動作 command1 file1 f test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是...