shell - shell脚本中的基本名称命令

标签 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.

谁能看出我做错了什么?

谢谢!

最佳答案

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

然后改变这一行:

filename='basename $file'

对此:

filename=`basename $file`

关于shell - shell脚本中的基本名称命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328451/

相关文章:

Linux shell : LOOP for create file in each folder

java - 使用超时处理程序从 PHP 调用 Java

c# - 以编程方式安装证书吊销列表 (CRL)

shell - `if (( ... )) then` 中缺少分号并且没有语法错误?

bash - 通过 Bash 传递命令行参数

linux - 重命名文件夹中的所有文件,编号递增

linux - 如何解析一行——引号内的内容或使用 unix 的模式

linux - 在一个 makefile 中编译 C++ 和 C 文件

windows - 尝试使用 powershell 将日志文件的最后 10 行连接到批处理变量

linux - 无法在 shell 脚本内运行 ansible 命令