bash,逐个复制文本文件中列出的文件

时间:2013-05-29 19:25:42

标签: whitespace bash

#!/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”和“世界”。

需要帮助。

1 个答案:

答案 0 :(得分:2)

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

echo "$CONTENT"