我有一个简单的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)
答案 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