2013-03-25 67 views
0

我是Linux shell腳本新手,我試圖設置以下變量來獲取從鍵盤傳入的文件夾路徑的大小。我不斷收到錯誤,提示無效選項。 T設置變量Linux

誰能告訴我我做錯了什麼?當我刪除「大小」變量並保持原樣時,該錯誤消失。

謝謝!

#!/bin/bash 
echo -e "\nEnter the first directory (relative path)" 
read dir1 

size=find $dir1 -type f | wc -l 

echo $size 

回答

3

它應該是:

size=$(find $dir1 -type f | wc -l) 

使用$()符號意味着一個命令應該運行,並且其輸出置於就行了。

這是因爲變量被分配文字文本值。

myvar=foo 

將會把字符串「foo」到myvar而不是變量foo的值或foo的命令的結果。

myvar=$foo 

會把變量foo的價值爲myvar。並且

myvar=$(foo) 

會將運行命令foo的結果放到myvar中。

有一個shell語法的特殊部分,它允許您在運行命令之前分配變量值,並且只爲該命令設置這些變量值。它看起來像這樣:

x=foo1 y=foo2 command parameter ... 

size=find $dir1 -type f | wc -l 

size分配的「查找」的值,你已經寫的方式你的線,然後

$dir1 -type f # this won't be a valid command 

作爲一個單獨的命令被執行。

+0

工作。你能解釋爲什麼嗎?謝謝。將接受 – Teddy13 2013-03-25 05:46:05

+1

@ Teddy13:我已經添加了一些解釋。 – 2013-03-25 06:17:50

+0

謝謝!非常清楚! – Teddy13 2013-03-25 06:57:42