Простой: вручите локальный каталог с чем-то как SimpleHTTPServer, затем пере -wget
от localhost с подходящими вариантами.
$(...)
является очевидно передающим "Edie
, -
, и Realities.txt"
как разделяют аргументы. Необходимо заключить в кавычки $(...)
как любой другой $variable
, и Вы, вероятно, хотите удалить "
s.
[ -f "$(cat input.txt | grep FILE | sed 's/^.*"\(.*\)".*$/\1/')" ] && echo "exist" || echo "does not exist"
Необходимо заключить аргумент в кавычки -f
- если Вы работаете с set -x
Вы видели бы, что команда быть выполненной [ -f '"Edie' '-' 'Realities.txt"' ]
который является слишком многими аргументами.
[ -f "$(sed -e '/FILE/!d' -e 's/FILE "\([^"]*\).*/\1/' input.txt)" ]
Если у Вас есть GNU grep в Вашей системе, можно использовать:
[ -f "$(grep -Po '(?<=FILE ").*(?=")' input.txt)" ]
Для Вашего содержания файла
FILE "/path_to_file/filename" TXT
сделайте что-то как
grep FILE input.txt | while read line
do
fname=`echo $line | awk -F\" '{print $2}'` # this separates the line by the quotes
# result is like /path_to_file
echo $fname # just to check it
if [ -f $fname ]
then
ls -l $fname
echo "file exists"
else
echo "no file there $file"
fi
done
$fname
должен быть в двойных кавычках. Остальная часть Вашего кода не особенно полезна здесь.
– Gilles 'SO- stop being evil'
02.03.2012, 01:04