2016-11-17 2 views
1

Я пытаюсь достичь чего-то действительно простого здесь, но чего-то не хватает.Bash: Путь с

Я пытаюсь создать файл через скрипт bash (.sh).

Когда я пытаюсь прямо на моем терминале:

touch /Users/luco/Downloads/My\ Test\ Folder/test.txt 

Это создает файл .txt без проблем. Тем не менее, когда я пытаюсь прямо на свой сценарий:

#!/bin/sh 
clear 
touch "$1"/test.txt 

Это не работает. Дает мне это сообщение:

.../test.txt: No such file or directory 

Я звоню сценарий в этом способами:

./Script.sh "/Users/luco/Downloads/My\ Test\ Folder/" 
./Script.sh /Users/luco/Downloads/My\ Test\ Folder/ 

никто не работал.

Что я делаю неправильно?

Заранее спасибо.

+0

Как вы называя скрипт? – chepner

+0

Что делать, если вы запускаете его как './the_script/Users/luco/Downloads/My \ Test \ Folder'? – Arkku

+1

Сценарий, указанный в вашем вопросе, не демонстрирует проблему. –

ответ

3

Используя обе цитаты и обратные слэши во время вызова будет производить ту же ошибку, используя либо это:

#!/bin/sh 
touch "$1/test.txt" 

... или это:

#!/bin/sh 
touch "$1"/test.txt 

Проблема может воспроизводиться как таковые:

$ ./test.sh "/Users/admin/Developmemt/Pippo\ Pelo" 
touch: /Users/admin/Developmemt/Pippo\ Pelo/test.txt: No such file or directory 

Я получаю ошибку (из-за обратной косой черты внутри кавычек - "/" - что означает, что буквальная обратная косая черта, как ожидается, будет частью имени каталога).


В противоположность этому, если не использовать кавычки, обратный слеш читается как сигнал к корпусу, а не как часть имени каталога, поэтому он работает:

$ ./test.sh /Users/admin/Developmemt/Pippo\ Pelo 
Смежные вопросы