页面“Shell date用法”与“Shell too many arguments”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
(导入1个版本)
 
docker>Evan
 
第1行: 第1行:
shell获取时间函数和date用法参数
+
=too many arguments=
 
 
Linux shell中对日期时间的处理、日期时间加减
 
 
 
== 基础知识==
 
<pre>
 
明天:
 
`date -d tomorrow +%y%m%d`
 
 
 
##今天
 
evan@evanpc:~$ date +%Y-%m-%d
 
2017-08-08
 
 
 
###昨天
 
evan@evanpc:~$ date -d "yesterday" +%Y-%m-%d
 
2017-08-07
 
 
 
evan@evanpc:~$ date -d "1 days ago" +%Y-%m-%d
 
2017-08-07
 
 
###前天
 
evan@evanpc:~$ date -d "2 days ago" +%Y-%m-%d
 
2017-08-06
 
 
 
其它的依次类推
 
 
 
#更新前的备份目录
 
DATE=$(date +%Y%m%d%H%M)
 
echo $DATE
 
201809271201
 
 
 
date
 
2018年 09月 27日 星期四 12:02:08 CST
 
 
 
</pre>
 
 
 
==linux and freebsd的区别 ==
 
 
<pre>
 
<pre>
#!/bin/bash
+
Question:
#var
+
+ webcode='[Errno 111] Connection refused'
#on freebsd
+
+ '[' '[Errno' '111]' Connection refused -eq 200 ']'
TODAY=`date -v -1d +%Y%m%d`
+
/data/update/sh/readup.sh: line 27: [: too many arguments
  
#linux
+
Solve Solutions:
#TODAY=`date +%Y%m%d`
+
if [ $webcode -eq 200 ] 变为
#TODAY=`date -d '1 days ago'  +%Y%m%d`
 
#20180813
 
  
#显示前一天为
+
webcode=` /data/mon/monitor_http.py http://47.106.6.9:80/xtwlztdj_read_interface/cmd/version`
#DATE1=`date -d '1 days ago' +%Y%m%d` -d参数可以设置与当前日期的计算时间,同样,前2天为'2 days ago',去掉ago则为当前日期之后多少天
+
if [ "$webcode" -eq "200" ]
 +
then
 +
echo "read is sucess"
 +
fi
  
 +
Cause:
 +
养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。
  
今天 1
+
如果环境变量没放在双引号中,那么bash 认为条件中的自变量过多。
  
date -v 1d
+
可以用双引号将字符串自变量括起来消除该问题。
2019年 9月 1日 星期日 12时26分57秒 CST
 
</pre>
 
==trouble==
 
<pre>
 
hfdata="date +%s" #这样是一个字符串 上次小伙伴在群里问的问题
 
$ echo $hfdata
 
date +%s
 
  
哪个人说IT 老了就没用了,我告诉你,有经验才能发现这些问题好不好
+
看来是要养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。
 
</pre>
 
</pre>
  
==参考==
+
=see also=
[http://lxw1234.com/archives/2015/10/522.htm Linux shell中对日期时间的处理、日期时间加减]
+
[https://blog.csdn.net/wang_cir/article/details/6120101 关于Shell 脚本中的"[: too many arguments"错误]
 
 
[http://songhl.blog.51cto.com/1538319/1309734 shell获取时间函数和date用法参数]
 
 
 
[https://blog.csdn.net/shanliangliuxing/article/details/16821175 linux在shell中日期格式化(时间格式化)]
 
  
[[category:shell]]
+
[[category:shell]]

2018年10月31日 (三) 02:42的版本

too many arguments

Question:
+ webcode='[Errno 111] Connection refused'
+ '[' '[Errno' '111]' Connection refused -eq 200 ']'
/data/update/sh/readup.sh: line 27: [: too many arguments

Solve Solutions:
if [ $webcode -eq 200 ] 变为

webcode=` /data/mon/monitor_http.py http://47.106.6.9:80/xtwlztdj_read_interface/cmd/version`
if [ "$webcode" -eq "200" ]
then 
echo "read is sucess"
fi

Cause:
养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。

如果环境变量没放在双引号中,那么bash 认为条件中的自变量过多。

可以用双引号将字符串自变量括起来消除该问题。

看来是要养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。

see also

关于Shell 脚本中的"[: too many arguments"错误