A. shell 怎樣將文件內容讀入變數
var=$(cat name.txt)
B. 如何在shell腳本中使用變數
系統定義的變數:
這些變數由操作系統(linux)自身創建並維護,通常它們以大寫字母定義,我們可以通過命令「$ set」來查看這些變數。下面列出了部分系統定義的變數:
系統定義的變數
意義
BASH=/bin/bash
Bash Shell 名稱
BASH_VERSION=4.1.2(1)
Bash 版本
COLUMNS=80
你的屏幕寬度(列數)
HOME=/home/linuxtechi
用戶家目錄
LINES=25
你的屏幕高度(行數)
LOGNAME=LinuxTechi
當前登錄用戶的名字
OSTYPE=Linux
操作系統類型
PATH=/usr/bin:/sbin:/bin:/usr/sbin
可執行文件搜索路徑
PS1=[\u@\h \W]\$
命令行提示符
PWD=/home/linuxtechi
當前工作目錄
SHELL=/bin/bash
Shell 名稱
USERNAME=linuxtechi
當前登錄的用戶名
要列印以上變數的值,可以使用echo command命令,如下:
# echo $HOME# echo $USERNAME
我們可以通過在環境變數名前前置一個美元符號來從你的腳本里輸入環境變數。請看下面腳本演示:
$ cat myscript #!/bin/bash# display user information from the system.echo 「User info for userid: $USER」echo UID: $UIDecho HOME: $HOME
注意:echo命令中的環境變數在腳本運行時會被它們的值替代。同時注意,我們可以再第一個字元串的雙引號中放置$USER系統變數,而shell腳本仍然可以明白我們的意思。然而,該方法有一個缺點。看下面這個例子:
$ echo 「The cost of the item is $15」The cost of the item is 5
很明顯,那不是我們說希望的。無論何時,當腳本遇見引號中的美元符號時,它都會認為你是在調用一個變數。在本例中,該腳本試著顯示變數$1(而這個變數並沒有定義),然後顯示數字5。要顯示實際上的美元符號,你必須前置一個反斜線字元:
$ echo 「The cost of the item is \$15」The cost of the item is $15
那樣好多了。反斜線允許shell腳本將美元符號解釋成為實際的美元符號,而不是變數。
用戶定義的變數:
這些變數由用戶定義。shell腳本允許我們在腳本中設置並使用我們自己的變數。設置變數允許你臨時存儲數據並在腳本中使用,讓shell腳本看起來像一個真正的計算機程序。
用戶變數可以是任何不超過20個的字母、數字或者下劃線字元的文本字元串(LCTT 譯註:變數只能以字母或下劃線開頭)。用戶變數是大小寫敏感的,因此,變數Var1和變數var1是不同的變數。這個小規則常常讓新手編寫腳本時麻煩重重。
我們可以通過等於號為變數賦值。變數,等於號和值(對於新手又是個麻煩的地方)之間不能有空格。下面是幾個給用戶變數賦值的例子:
var1=10var2=-57var3=testingvar4=「still more testing」
shell腳本為變數值自動確定數據類型。shell腳本內定義的變數會在腳本運行時保留它們的值,當腳本完成後則刪除這些值。
就像系統變數一樣,用戶變數也可以使用美元符號來調用:
$ cat test3#!/bin/bash# testing variablesdays=10guest="Katie"echo "$guest checked in $days days ago"days=5guest="Jessica"echo "$guest checked in $days days ago"$
運行腳本會產生以下輸出:
$ chmod u+x test3$ ./test3Katie checked in 10 days agoJessica checked in 5 days ago$
每次變數被調用,它都會變成了當前分配給它的值。有一點很重要,當調用一個變數值時,你使用美元符號,但是當為一個變數分配一個值時,你不能用美元符號。下面用例子來說明:
$ cat test4#!/bin/bash# assigning a variable value to another variablevalue1=10value2=$value1echo The resulting value is $value2$
當你使用賦值語句中value1變數的值時,你仍然必須使用美元符號。這段代碼產生了如下輸出:
$ chmod u+x test4$ ./test4The resulting value is 10$
如果你忘了美元符號,而又讓value2賦值行看起來像這樣:
value2=value1
你會獲得下面的輸出:
$ ./test4 The resulting value is value1$
沒有美元符號,shell解釋變數名為普通文本字元串,這極有可能不是你想要的。
在shell變數中使用反引號(`):
反引號允許你將shell命令的輸出賦值給變數。雖然這似乎沒什麼大不了,但它是腳本編程中主要的構建基塊。你必須使用反引號將整個命令行包含起來:
**testing=`date`**
shell會在反引號中運行命令,然後將輸出結果賦值給變數testing。下面的例子給出了如何使用一個常規shell命令的輸出結果來創建一個變數:
$ cat test5#!/bin/bash# using the backtick charactertesting=`date`echo "The date and time are: " $testing$
變數testing接收來自date命令的輸出結果,而它又在echo語句中被調用。運行腳本會產生如下輸出:
$ chmod u+x test5$ ./test5The date and time are: Mon Jan 31 20:23:25 EDT 2011
註:在bash中,你也可以選用$(...)語法來替換反引號(`),它有個優點就是可以重用(re-entrant)。
例:
$ echo " Today』s date & time is :" $(date)Today』s date & time is : Sun Jul 27 16:26:56 IST 2014
C. shell編寫一個讀取文件內容,作為變數,放入一個設定的linux語句中,然後執行它
#!/bin/sh
for yyyy in `cat 1.txt`;do
mv /abc/good${yyyy}/ abc/${yyyy};
done
D. 如何在shell腳本中使用變數
[root@FW91 playbook]# msg=Hello
[root@FW91 playbook]# echo $msg
Hello
[root@FW91 playbook]# echo $msg World
Hello World
[root@FW91 playbook]# echo ${msg}! #變數不帶空格拼接字元串,需要用{}將變數名括起來
Hello!
以上是sh,bash的變數賦值語法
以下是csh的語法
[root@FW91 playbook]# csh
[root@FW91 playbook]# setenv msg Hello
[root@FW91 playbook]# echo $msg
Hello
E. shell如何讀取文件中變數值
|1
2
3
4
5
6
#!/bin/bash
#使用方法:內./script.sh filename
a=$(sed -n '$p' $1 |容 awk -F"," '{print $1}')
b=$(sed -n '1!P;N;$q;D' $1 | awk -F"," '{print $1}')
echo $a
echo $b
F. 在Shell腳本中,讀取鍵盤輸入的內容並將其賦值給Shell變數的命令是什麼
在sell腳本中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:
read-p"inputaval:"valecho$val
read - 從標准輸入讀取數值。這個 read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取文件中的一行數據。
它的語法形式一般是:
read[-options][variable...]
這里的 options 是下面列出的可用選項中的一個或多個,且 variable 是用來存儲輸入數值的一個或多個變數名。 如果沒有提供變數名,shell 變數 REPLY 會包含數據行。
基本上,read 會把來自標准輸入的欄位賦值給具體的變數。
G. shell腳本怎樣讀取文件的值,並賦值給變數
在sell腳本中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:
read -p "input a val:" val echo $val
read - 從標准輸入讀取數值。這個 read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取文件中的一行數據。
它的語法形式一般是:
read [-options] [variable...]
(7)sheel腳本讀寫文件變數擴展閱讀:
Shell是一種腳本語言,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh: 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
常見的編程語言分為兩類:一個是編譯型語言,如:c/c++/java等,它們遠行前全部一起要經過編譯器的編譯。
H. 在Ubuntu下編寫shell腳本讀取文件
需求功能:
創建測試用例文件 text :
創建shell腳本:
運行結果:
利用 awk 'END{print NR}' [文件名] 來輸出行數:
在shell腳本中添加該功能:
運行結果:
上面的shell文件只是把文件名寫死在腳本中,並沒有實際使用意義,所以需要編寫一個指令來指定需要讀取的文件,就像 vim [文件名] 一樣
「$1」 代表第1個參數,也就是在 read 之後緊跟的參數,將其作為文件名傳入:
將腳本移動至環境變數對應的目錄中:(可以自己更改 /bin/xxx 來決定運行命令的名稱,但注意不能重復)
sudo mv read /bin/read
然後添加運行許可權:
sudo chmod 755 /bin/read
打開終端的目錄可以是任何位置,通過以下命令即可運行shell腳本:
sudo read [文件路徑]
同理,我們還可以自己為復雜指令編寫shell腳本,來提高命令的使用效率,例如開關ss服務,打開銳捷客戶端認證等等。
I. 如何在shell腳本里讀取另一個properties文件的變數
你可以在shell中使用cat的方式讀取這個文件
然後把你獲得的變數賦予某個參數
VAR=`cat preperties|grep XX`
類似這樣的方法
J. linux腳本文件中怎麼從文件中讀取數據並賦值給變數
linux腳本文件中,從文件中讀取數據並賦值給變數的操作方法和步驟如下:
1、首先,創建一個名為shell.sh的文件:vi shell.sh,如下圖所示。