我運行它在MacOS埃爾卡皮坦10.10.6得到猛砸
所有命令中讓我的當前目錄有空格的腳本路徑(通路,我從我的腳本)只有這個工作對我來說:
FILES="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
但它不會工作,如果該文件夾中有空格在它的名字(又名:「文件夾名」)
如何解決這一問題?
謝謝! )
更新:增加了一個腳本:
#!/bin/bash
function check()
{
oldsize=`wc -c <"$1"`
sleep 1
newsize=`wc -c <"$1"`
while [ "$oldsize" -lt "$newsize" ]
do
echo "Not yet..."
oldsize=`wc -c <"$1"`
sleep 1
newsize=`wc -c <"$1"`
done
if [ "$oldsize" -eq "$newsize" ]
then
echo "The file has been copied completely."
fi
}
FILES="$(dirname "${BASH_SOURCE[0]}")/*"
function main
{
for f in $FILES
do
if [[ "$f" =~ \.mkv$ ]];
then
#/////////////////////////////////////////////////////////////////////
check "$f"
((count = count + 1))
g="${f/mkv/avi}"
#LOG_FILE="${g/avi/log}"
#exec > >(tee -a "${LOG_FILE}")
#exec 2> >(tee -a "${LOG_FILE}" >&2)
now="$(date)"
printf "Current date and time %s\n" "$now"
echo "Processing $f file..."
#avconv -i "${f}" -map 0:0 -map 0:1 -codec copy -sn "${g}"
avconv -i "$f" -map 0 -codec copy "$g"
if [ $? -eq 0 ]; then
echo OK
rm "$f"
else
echo FAIL
rm "$g"
#rm "$LOG_FILE"
return
fi
fi
#/////////////////////////////////////////////////////////////////////
done
}
############
count=0
############
main
if (($count > 0)); then
open "$(dirname "${BASH_SOURCE[0]}")"
fi
exit
你的意思是[*空格*](https://en.wikipedia.org/wiki/Whitespace_character)? – hek2mgl
您正在查找保存腳本來源的目錄,還是查找運行腳本的進程的當前目錄?你的術語有點混亂。 「DIRECTORY =」$(dirname「$ {BASH_SOURCE [0]}」)「'(這是很多引號和括號)出了什麼問題。請注意,命令中的「cd」運行在子shell中,因此不會影響父shell進程。 –
我想要從腳本運行的目錄得到 – user3027198