笔者在用一个pdftohtml命令把一大堆论文生成网站的脚本书写过程中,遇到一个问题:
论文名称的空格在下面的代码中会被错误分割
#!/bin/bash
for file in $(ls $1) # 这里的$1是第一个输入参数,遍历$1下的文件
do
echo $file
done
目录是这样的
运行结果是这样的,很明显没能处理好空格 "\ "
解决方法很简单,加双引号即可:
#!/bin/bash
for file in "$(ls $1)" # 这里的$1是第一个输入参数,遍历$1下的文件
do
echo "$file"
done
做了个遍历目录下的所有文件的函数,代码如下
#/bin/bash
function getdir(){
for element in "$(ls $1)"
do
dir_or_file="$1/$element"
if [ -d $dir_or_file ]
then
getdir $dir_or_file
else
echo "$dir_or_file"
fi
done
}
getdir $1 # 接受命令行参数
# 如果这个shell文件保存为 getdir, 并且有运行权限: chmod +x getdir
# 运行例如: ./getdir ~/