2011-06-17 88 views
0

我是shell腳本新手。我的目標是通過shell腳本執行ls命令,但它不返回任何內容。煤礦是一個bash shell的執行shell腳本的問題

set p = `/bin/ls` 
echo $p 

我要去哪裏錯了

回答

4

對於bash做到這一點的方法是

p="$(/bin/ls)" 
# Could have done p=`/bin/ls` too, but $(is the newer way 
echo "$p" 

set命令不是標準的變量賦值。

+0

謝謝@sodved,解決方案工作。 – CHID 2011-06-17 05:04:48

4

簡單

p=`/bin/ls` 

就足夠了,雖然我更喜歡$()結構,因爲它很容易嵌套:

pax$ p=$(/bin/ls) 

pax$ echo $p 
clients.dat clientupdate.sh 

你的set做(處理所有有效的開關來設置shell的屬性,後其中沒有)將參數分配給$n參數:

pax$ set p = `/bin/ls` 

pax $ echo xx $1 xx $2 xx $3 xx $4 xx $5 
xx p xx = xx clients.dat xx clientupdate.sh xx xx 

man bash_builtins頁:

任何後處理的選項都視爲該位置參數值和被分配,以便以$1, $2, ... $n剩餘的參數。

+0

謝謝。這是gr8 – CHID 2011-06-17 05:05:24

0

Bash的語法是分配給變量時沒有投入的空間,所以像這樣做:

p=`/bin/ls` 
echo $p 
0

你就不能寫...

/bin/ls 

...在一行中?