shell eval命令使用

2021-09-30 09:26:02 字數 1831 閱讀 6121

本文將會講解一些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 eval命令使用

eval命令將會首先掃瞄命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃瞄無法實現其功能的變數。該命令對變數進行兩次掃瞄。這些需要進行兩次掃瞄的變數有時被稱為複雜變數。不過這些變數本身並不複雜。eval命令也可以用於回顯簡單變數,不一定是複雜變數。1.eval 命令也可以用於回顯簡單變...

Shell eval通過變數獲取環境變數的方法實現

環境中已存在環境變數 user env name user echo bad substitution 很顯然,直接使用 巢狀來獲取值是行不通的 環境中已存在環境變數 user env name user eval echo env name icebergu eval 先將對引數進行變數的替換,然...

Shell命令 使用命令

shell命令的基本格式為 command option argumentsoption一般是連字元 加上單個字元,多個這樣的短選項可以寫在一起,如ls lt,很多命令也支援兩個連字元 的長選項,如ls a等價於ls all。多條命令可以寫在一行,使用分號 分隔 預設情況下,傳入給命令的引數會進行單...