#!/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”和“世界”。
需要帮助。
答案 0 :(得分:2)
将shell变量用作命令的参数时,始终将shell变量括在引号中。这解决了您遇到的空间问题,并有助于防止恶意输入。
echo "$CONTENT"