2013-05-29 38 views
0
#!/bin/sh 

ls|cat > temp  #WRITE CONTENTS OF CURRENT DIRECTORY INTO temp FILE 

LENGTH=$(wc -l temp) #TO MONITOR EOF 

echo "there are ${LENGTH% *} files/directories present" 

COUNT=1   #INITIALIZE COUNTER BY ONE 

CONTENT=$(head -$COUNT temp|tail -1) #STORE COUNTth NAME INTO CONTENT 

echo $CONTENT|sed s/' '/'\\'/g 

mv `echo $CONTENT|sed s/' '/'\\'/g` virtual/ 

的目的是將ls命令的輸出寫入到一個臨時文件,由一個從臨時文件接一個文件名之一,並將其​​複製到複製文本文件一上市文件各自的位置。慶典,由一個

問題是,當我使用「CONTENT」作爲cp命令的參數時,假設$ CONTENT是「hello world」,cp將它視爲兩個單獨的文件「hello」和「world」。

需要幫助。

+0

在bash中,使用'$ {CONTENT // // \\}'代替通過'sed'管道輸出。 – chepner

回答

2

將外殼變量作爲參數用於命令時,始終將外殼變量換成引號。這解決了您遇到的空間問題,並有助於防止惡意輸入。

echo "$CONTENT" 
+0

它的工作非常感謝。 – Rudhin