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”。

需要帮忙。

4

1 回答 1

2

当您将 shell 变量用作命令的参数时,请始终将它们用引号括起来。这解决了您遇到的空间问题,并有助于防止恶意输入。

echo "$CONTENT"
于 2013-05-29T19:32:06.013 回答