通过bash中的变量创建文件

时间:2014-05-12 10:00:57

标签: bash date filenames

我有一个简单的bash脚本来创建一个文件,然后将rsync的输出记录到它。

然而,它不起作用我一直得到"命令未找到",不创建文件并且不记录它。我收到错误" / var / log /"是一个目录。

#!/bin/bash
FILENAME=ram_sys4-$(date +%Y_%m_%d_%H:%M).log
touch /var/log/$(FILENAME)
date >> /var/log/$(FILENAME)
rsync -r -L -H -g -o -p -t -a --delete --verbose --log-format="%t %i %l %f %M %h %o \n" --log-file=/var/log/$(FILENAME) /root/Desktop/R/ /root/Desktop/W/
date >> /var/log/$(FILENAME)

2 个答案:

答案 0 :(得分:1)

语法$(VAR_NAME)用于Makefile,但不用于bash。在bash中,使用

${VAR_NAME}

甚至更简单

$VAR_NAME

答案 1 :(得分:1)

#!/bin/bash
FILENAME=ram_sys4-$(date +%Y_%m_%d_%H:%M).log
touch /var/log/${FILENAME}
date >> /var/log/${FILENAME}
rsync -r -L -H -g -o -p -t -a --delete --verbose --log-format="%t %i %l %f %M %h %o \n" --log-file=/var/log/${FILENAME} /root/Desktop/R/ /root/Desktop/W/
date >> /var/log/${FILENAME}

$(FILENAME) Command Substitution您正在尝试做的是Parameter Expansion