shell脚本中的Basename命令

时间:2016-07-12 12:06:01

标签: shell unix scripting

我正在尝试将以下内容作为应用程序启动脚本的一部分运行:

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

不评估basename命令,只打印出来。

当我从提示符运行命令时,它可以正常工作。

Bash版本:

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

谁能看到我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

由于系统有bash,并且该脚本适用于bash,因此首先将脚本的第1行从#!/bin/sh更改为#!/bin/bash

然后改变这一行:

filename='basename $file'

对此:

filename=`basename $file`