2015-07-02 4 views
-1

У меня есть путь к каталогу, и мне нужно извлечь из него имя файла, чтобы я мог использовать его далее в сценарии оболочки.Echo basename в оболочке

#!/bin/sh 
dir=/var/tmp/file1 
fname= basename $dir 
echo $fname 
echo "The script executes:" $fname 
echo $fname 

Здесь fname печатается только один раз. Во всех остальных случаях он становится пустым.

Где я, я ошибаюсь?

+3

'имя_файл = $ dir' базовое имя должно быть' имя_файл = $ (базовым каталог "$ реж") '. Возможно, вам следует прочитать учебное пособие или руководство? – Biffen

ответ

0

Это ниже работает.

#!/bin/sh 
dir=/var/tmp/file1 
fname=`basename $dir` 
echo $fname 
echo "The script executes:" $fname 
echo $fname 

выход $: ./tt.sh

file1

Сценарий выполняет: file1

file1

+0

Я использовал его таким образом, но теперь в этом случае файл1 выполняется. :( – user2403449

+0

@ user2403449 Не, если вы это сделали * точно так, как это. Заметьте, что пробелы вокруг '=' s производят * огромную * разницу. – Biffen

+1

@ my-мысли '$()' предпочтительнее по сравнению с обратными окнами в наши дни. хотя и не обязательно в этом случае, переменные должны указываться как правило. – Biffen

-1

Некоторые больше очков, чтобы добавить на верните приведенные выше ответы.

Если и хочет, только имя файла без расширения

использования ниже команд

filename.type .type базового

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