2013-05-29 4 views
0

У меня есть Баш скрипт, который получает файлы в качестве аргументов, как этот:Сохранение косых черт в аргументе path bash?

>myscript dir/smalldir/file1.txt file3.txt 

теперь я хотел бы сохранить арг:

>[email protected] 

или

>args=$* 

но когда я пытаюсь использовать его, он печатает:

dirsmalldirfile1.txt file3.txt 

без косых черт. Как я могу это исправить? Я новичок в bash и имею домашнюю работу.

спасибо.

+5

слезы (/) или обратная косая черта (\\)? – coelhudo

+0

Я имел в виду косые черты "/" – Emad

+0

Как вы его пытаетесь использовать? –

ответ

2

Вы можете получить близко к результату, вы видите, если вы измените настройку МФС, межбюджетные-разделители полей:

$ set -- "/abc/def/ghi" "jkl" "mno pqr/stu vwx" 
$ print "%s\n" "[email protected]" 
abc/def/ghi 
jkl 
mno pqr/stu vwx 
$ echo "[email protected]" 
abc/def/ghi jkl mno pqr/stu vwx 
$ IFS=/ 
$ echo [email protected] 
abc def ghi jkl mno pqr stu vwx 
$ IFS=$' \t\n' 
$ 

Это не работает слова вместе, но это не потерять слэш. Чтобы лучше диагностировать вашу проблему, вам нужно будет предоставить больше кода в вашем скрипте.


Независимо от вопроса с исчезающими косыми чертами, если вам нужно сохранить аргументы, вы действительно должны использовать:

args=("[email protected]") 

Это сохраняет имена файлов в массив, сохраняя имена отдельно и правильно обрабатывать пространства. Вы можете получить доступ отдельных имен файлов, используя индексы, начиная с 0:

echo "${args[1]}" 
echo "${args[@]}" 
for file in "${args[@]}"; do ...; done 

Обозначения, используемым в этом вопросе является:

args=$* 
[email protected] 

Это как сохранить имена файлов в одну строку с пробелами, разделяющими оригинальные имена. Это нельзя надежно разделить на оригинальные имена файлов, если в исходных именах файлов есть пробелы. В большинстве случаев это не то, что вы хотите.

+0

Да, но это не объясняет исчезновение символов '/' (для этого нам потребуется дополнительная информация из OP). –

+0

Согласовано, но пока мы не получим информацию о том, является ли IFS фактором, он дает некоторые полезные рекомендации по общим сценариям (более чем подходит для комментария удобно). –

+0

ty Я бы хотел использовать такие аргументы grep -h "something" $ args как я могу это сделать? – Emad

Смежные вопросы