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)
谁能看到我做错了什么?
谢谢!
由于系统具有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)