Комментарий: если вы когда-либо переходите к нормальной Unix-подобной системе, а не к Linux, вы не уйдете с 'head $f -n1
'; вы должны поместить опционные (контрольные) аргументы перед именами файлов, поэтому используйте 'head -n1 $f
'. (Если вы установите переменную окружения POSIXLY_CORRECT, Linux будет вести себя так же, как и в других системах.)
Комментарий: вы прекрасно могли бы написать:
FileName1=`head -n1 $f | awk -F/ '{print $NF}' | sed 's/\"//'`
FileName2=$Filename1
FileName3=$Filename1
Это имеет больше смысла, чем работает те же три программы на том же данные три раза.
Комментарий: Вы должны изучить и использовать '$ (...)' обозначения:
FileName1=$(head -n1 $f | awk -F/ '{print $NF}' | sed 's/\"//')
При запуске на MacOS X, с е = xxxx.input и файл xxxx.input, содержащий одну строку что говорит '/some/where/myfile.txt', сценарий производит:
/var/ftp/pub/faxes/myfile.txt
/var/ftp/pub/faxes/myfile.txt.pdf
txt
Трассировочная ('баш -x') является:
+ f=xxxx.input
+ PDF=.pdf
++ head -n 1 xxxx.input
++ sed 's/\"//'
++ awk -F/ '{print $NF}'
+ FileName1=myfile.txt
++ head -n 1 xxxx.input
++ awk -F/ '{print $NF}'
++ sed 's/\"//'
+ FileName2=myfile.txt
++ awk -F/ '{print $NF}'
++ head -n 1 xxxx.input
++ sed 's/\"//'
+ FileName3=myfile.txt
++ basename myfile.txt
+ FileName=myfile.txt
++ echo myfile.txt
++ awk -F . '{print $NF}'
+ Ext=txt
++ basename myfile.txt
+ FileName=myfile.txt
+ oFileName=/var/ftp/pub/faxes/myfile.txt
++ basename myfile.txt
+ FileName=myfile.txt
+ NewFile=/var/ftp/pub/faxes/myfile.txt.pdf
+ echo /var/ftp/pub/faxes/myfile.txt
/var/ftp/pub/faxes/myfile.txt
+ echo /var/ftp/pub/faxes/myfile.txt.pdf
/var/ftp/pub/faxes/myfile.txt.pdf
+ echo txt
txt
Вы вам нужно будет показать, что вы действительно используете, и «bash -x» может помочь вам понять, где ваша проблема - я не могу воспроизвести ее.
Поскольку вы не выбрали '$ FileName' или' $ FileName3', мы не можем помочь. –
, поэтому он фактически заменяет/var на .pdf? или это должно быть .pdf/var/ftp ..? – falstro
Вы должны добавить двойные кавычки ('' "') вокруг всех назначений без обратных ссылок, чтобы имена файлов с пробелами обрабатывались правильно. – Thomas