2016-07-12 3 views
1

Я пытаюсь выполнить следующую команду в рамках запуска приложения сценария:команда Basename в сценарии оболочки

for file in $TEMPLATE_FOLDER/* 
do 
    filename='basename $file' 
    echo "Processing $filename" 

    if [ -f "$CONF_FOLDER/$filename" ] 
    then 
     echo "Using existing $filename" 
    else 
     echo "Creating $filename from template $file" 
     cp $file $CONF_FOLDER 
    fi 
done 

Но выход:

Processing basename $file 
Creating basename $file from template ../conf/templates/conf-TEST/log4j.xml 

Команда базовое имя не вычисляется и просто распечатано.

Когда я запускаю команду из приглашения, она отлично работает.

версия Bash:

bash -version 
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10) 
Copyright (C) 2004 Free Software Foundation, Inc. 

Может кто-нибудь увидеть, что я делаю неправильно?

Спасибо!

ответ

1

Поскольку система имеет bash, а сценарий работает с bash, первая строка изменения № 1 сценария от #!/bin/sh до #!/bin/bash.

Затем измените эту строку:

filename='basename $file' 

Для этого:

filename=`basename $file` 
+0

Спасибо большое. Он отлично работает! – KasperF

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