Shell 调用 tar 打包总是报错!

2015-12-09 10:26:16 +08:00
 jalena

最近在折腾一个脚本,但是总遇到 一个报错!

脚本在 https://github.com/jalena/vps-backup/blob/master/backup.sh (错误地方在#97 )

每次执行的时候以下代码就包 tar 没有 e 参数!!

function configuration(){
nginxcnf='find / -name nginx.conf |grep -v root'
tar cPf nginx
$(date +%Y%m%d).tar.gz $NGINXPATH
echo -e "package nginx
$(date +%Y%m%d).tar.gz success!"
tar rPf nginx_$(date +%Y%m%d).tar.gz $nginx_cnf
echo -e "Additional file successfully"
}

求大神解答写

3472 次点击
所在节点    Linux
16 条回复
ooxxcc
2015-12-09 10:36:15 +08:00
错误提示都不贴出来……
ooxxcc
2015-12-09 10:37:27 +08:00
两个 tar 命令前面加 echo ,看看实际执行的指令是什么
pright
2015-12-09 10:47:11 +08:00
nginxcnf=`find / -name nginx.conf |grep -v root`
是`不是'
congeec
2015-12-09 10:48:04 +08:00
看了下,你 shell 用的很不规范。即使这个地方修复了其他地方肯定也有 bug 。用 shellcheck 过一边吧
SpicyCat
2015-12-09 11:56:30 +08:00
set -ex 或者 set -x 看看详细执行信息。

打包是 tar zcPf 吧?你代码在另外一个地方用的是 tar zcPf ,为什么这里用 tar cPf
Arthur2e5
2015-12-20 13:48:49 +08:00
能不能先学学 markdown ……
@SpicyCat z 只是要求 gzip 而已。
@pright 干脆不要用反引号用$( ) 大法……
@congeec shellcheck 目前为止还不会提醒 function xxx 这种坏习惯。
congeec
2015-12-20 14:54:50 +08:00
@Arthur2e5 funciton 啥的就是看起来碍不碍眼。关键是楼主变量没有加引号噗哈哈。
``` shell
var=
rm -rf /usr/local/$var
```
然后 /usr/local 目录就没了😆😆
JerningChan
2015-12-21 11:07:14 +08:00
你的$nginx_cnf?是哪个变量呀?
你帖出来的,就看见个
nginxcnf='find / -name nginx.conf |grep -v root'
你确定你未写错变量?
Arthur2e5
2015-12-21 17:00:16 +08:00
@congeec function 并不是碍不碍眼的问题。写顺了写进简陋一点但还算 POSIX 的 shell 例如 dash 和 busybox ash 试试喏。这种最容易避免的 bashism 干脆从最早就不要有。

* 当然,可以养成 `alias function=` 的习惯……

然后管你加不加引号你那个 var 是空的的时候都得死啊。
congeec
2015-12-21 18:12:09 +08:00
@Arthur2e5 你说的对哦
jalena
2016-01-23 11:56:38 +08:00
@pright 找到问题了,,,,,就是 nginxcnf=`find / -name nginx.conf |grep -v root` ~~~~~~
jalena
2016-01-23 11:58:19 +08:00
@congeec function 是故意去掉了,母的技术让他看起来更小..简写也不影响功能!
jalena
2016-01-23 12:03:48 +08:00
@JerningChan 变量没错,,只是这个输出的东西和打包用的路径不符,所以报错..用通道就好了..

find / -name nginx.conf |grep -v root | xargs tar rPf nginx_$current_date.tar.gz
jalena
2016-01-23 12:07:37 +08:00
@Arthur2e5 加不加 function 还是个人喜好问题吧,~
jalena
2016-01-23 12:11:24 +08:00
@SpicyCat cPf...

c 追加
P 按原始路径!
jalena
2016-01-23 12:51:21 +08:00
@Arthur2e5 刚开始来 V2EX 哈,我还不知道支持这个语法呢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/242190

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX