本文將會講解一些linux中命令的使用與技巧希望對新手給予幫助
一 e v a l命令將會首先掃瞄命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃瞄無法實現其功能的變數。該命令對變數進行兩次掃瞄。這些需要進行兩次掃瞄的變數有時被稱為複雜變數。不過這些變數本身並不複雜。e v a l命令也可以用於回顯簡單變數,不一定是複雜變數。
1 eval命令也可以用於回顯簡單變數,不一定是複雜變數
例如:
[neau@mail ~]$ name=valuebank
[neau@mail ~]$ eval echo $name
valuebank
[neau@mail ~]$ echo $name
valuebank
2 執行含有字串的命令
首先我們首先建立乙個名為test的小檔案,在這個小檔案中含有一些文字。接著,將cat test賦給變數myfile,現在我們e c h o該變數,看看是否能夠執行上述命令。
[neau@mail ~]$ vi test
[neau@mail ~]$ cat test
hello world!!!
i am a chinese boy!
將cat testf賦給變數myfile
[neau@mail ~]$ myfile="cat test"
如果我們e c h o該變數,我們將無法列出t e s t 檔案中的內容。
[neau@mail ~]$ echo $myfile
cat test
讓我們來試一下e v a l命令,記住e v a l命令將會對該變數進行兩次掃瞄。
[neau@mail ~]$ eval $myfile
hello world!!!
i am a chinese boy!
從上面的結果可以看出,使用e v a l命令不但可以置換該變數,還能夠執行相應的命令。第
一次掃瞄進行了變數置換,第二次掃瞄執行了該字串中所包含的命令cat test。
3命令還可以用來顯示出傳遞給指令碼的最後乙個引數
[neau@mail ~]$ cat test1
#!/bin/bash
echo "total of the arguments passed $#"
echo "the process id is $$"
echo "last argument os "$(eval echo \$$#)""
[neau@mail ~]$ ./test1 value bank test last
total of the arguments passed 4
the process id is 21545
last argument os last
在上面的指令碼中, e v a l命令首先把$ $ #解析為當前s h e l l的引數個數,然後在第二次掃瞄時
得出最後乙個引數。
4給每個值乙個變數名
可以給乙個值乙個變數名。下面我對此做些解釋,假定有乙個名為test2的檔案:
[neau@mail ~]$ cat test2
cctv 5
changel sports
like yes
你希望該檔案中的第一列成為變數名,第二列成為該變數的值,這樣就可以:
[neau@mail ~]$ cat test2
commany tq
langue english
like yes
[neau@mail ~]$ cat test3
#!/bin/bash
while read name value
doeval "$=$"
done
Shell程式設計 shell特性
linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...
Shell程式設計 Shell函式
shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...
Shell程式設計
1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...