Alexei Babich Опубликовано 30 декабря, 2004 Жалоба Опубликовано 30 декабря, 2004 Проблема тупая: есть программка, которая, как и все остальные, принимает аргументы из командной строки. Пример использования такой: $mp3tool write -a 'some_string' ./file.mp3 Эта утилка меняет метаданные в mp3 файле. Когда я так пишу, всё зашибись. Всё зашибись и тогда, когда в строке символов есть пробелы. Можно написать без кавычек, но тогда надо экранировать пробел, вот так: $mp3tool write -a some\ string ./file.mp3 Всё здорово до того момента, когда надо исполнять эту канитель в командном файле, фрагмент для примера: NAME='aaa bbb' mp3tool write -a $NAME ./file.mp3 И вот тут эта гадина начинает возбухать, что файл 'bbb' не найден. Типа, думает, что пробел отделяет опцию. Пробовал и с экранированием, и добавлением в саму переменную кавычек - один хрен не пашет. Обойти использование переменных нельзя, то есть, строка символов не статическая, меняется по мере развития событий. Есть дельные советы ? Если есть, то помогите, плиз. Кстати, проблема не в этой конкретно утилке - lame, например, тоже себя так-же ведёт. Спасибо Цитата
a.slastenov Опубликовано 30 декабря, 2004 Жалоба Опубликовано 30 декабря, 2004 ответ NAME='"sometext"' Цитата
a.slastenov Опубликовано 30 декабря, 2004 Жалоба Опубликовано 30 декабря, 2004 то есть используешь двойные кавычки внутри одинарных или наоборот) Цитата
Alexei Babich Опубликовано 30 декабря, 2004 Автор Жалоба Опубликовано 30 декабря, 2004 Вот он, скрипт: #!/bin/sh cp /mnt/smb/Apocaliptica/From_Out_Of_Nowhere.mp3 ./temp.mp3 NAME='"gggg rrrr"' mp3tool write -a $NAME ./temp.mp3 И вот результат: Error opening file: rrrr Короче, в командной строке работает на "ура", так не пашет наотрез !! Цитата
EL[michlen] Опубликовано 30 декабря, 2004 Жалоба Опубликовано 30 декабря, 2004 #!/bin/sh cp /mnt/smb/Apocaliptica/From_Out_Of_Nowhere.mp3 ./temp.mp3 NAME='"gggg\\ rrrr"' mp3tool write -a $NAME ./temp.mp3 Цитата
allez Опубликовано 30 декабря, 2004 Жалоба Опубликовано 30 декабря, 2004 Ну зачем же так мучиться? Если в значении переменной содержатся пробелы, значит в скрипте само имя переменной необходимо взять в кавычки, вот так: #!/bin/sh cp /mnt/smb/Apocaliptica/From_Out_Of_Nowhere.mp3 ./temp.mp3 NAME="gggg rrrr" mp3tool write -a "$NAME" ./temp.mp3 Попробуйте, это просто обязано работать. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.