【问题标题】:Basename command in shell scriptShell 脚本中的 Basename 命令
【发布时间】:2016-11-14 16:05:08
【问题描述】:

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

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.

谁能看到我做错了什么?

谢谢!

【问题讨论】:

标签: shell unix scripting


【解决方案1】:

由于系统有bash,并且脚本与bash一起工作,首先将脚本的第1行从#!/bin/sh更改为#!/bin/bash

然后改变这一行:

filename='basename $file'

到这里:

filename=`basename $file`

【讨论】:

猜你喜欢
  • 2014-11-21
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 2016-11-28
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多