我正在尝试将以下内容作为应用程序启动脚本的一部分运行:
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/