shell 脚本中的 Basename 命令

Kas*_*erF 2 unix shell 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
Run Code Online (Sandbox Code Playgroud)

但输出是:

Processing basename $file
Creating basename $file from template ../conf/templates/conf-TEST/log4j.xml
Run Code Online (Sandbox Code Playgroud)

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

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

bash 版本:

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

谁能看到我做错了什么?

谢谢!

agc*_*agc 8

由于系统具有bash,并且脚本可以使用bash,首先将脚本的第 1 行从#!/bin/sh更改为#!/bin/bash

然后改变这一行:

filename='basename $file'
Run Code Online (Sandbox Code Playgroud)

对此:

filename=`basename $file`
Run Code Online (Sandbox Code Playgroud)