我运行它在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