欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bash中正确处理文件或路径名中的空格

程序员文章站 2024-01-15 19:47:28
...

笔者在用一个pdftohtml命令把一大堆论文生成网站的脚本书写过程中,遇到一个问题:
论文名称的空格在下面的代码中会被错误分割

#!/bin/bash
for file in $(ls $1) # 这里的$1是第一个输入参数,遍历$1下的文件
do
	echo $file
done

目录是这样的
bash中正确处理文件或路径名中的空格
运行结果是这样的,很明显没能处理好空格 "\ "
bash中正确处理文件或路径名中的空格
解决方法很简单,加双引号即可:

#!/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 ~/