筆者在用一個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 ~/