每当我使用Sql*plus运行sql脚本并检查$?时,即使脚本不成功,我也会得到0.
例
#$ sqlplus user/password@instance @script.sql
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 7 14:20:44 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
v$dataf-ile d,
*
ERROR at line 6:
ORA-00933: SQL command not properly ended
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining …Run Code Online (Sandbox Code Playgroud) ISO-8601标准规定了这一点
"一年的第一周是包含一年中第一个星期四的一周(因此,总是包含1月4日)."
这意味着一年中的第一周不是包含1月1日的那一周,而是包含在新年四天的第一个星期.
根据周一,2016年1月11日是第2周.以下是2016年的周数列表.
Ubuntu在其时间小部件中反映出:
而且cal命令也有:
Oracle使用"iw"参数支持它TO_CHAR:
> select to_char(to_date('11/01/2016','dd/mm/yyyy'),'iw') weekno from dual;
> WEEKNO
02
Run Code Online (Sandbox Code Playgroud)
但Java表示2016年1月11日星期一是第3周
Calendar c = Calendar.getInstance();
System.out.println(c.getTime());
System.out.println(c.get(Calendar.WEEK_OF_YEAR));
Output:
Mon Jan 11 09:02:35 VET 2016
3
Run Code Online (Sandbox Code Playgroud)
Java认为一年中的第一周是包含1月1日的那一周.
- Java是否有办法使用符合ISO-8601标准的周编号?
我想知道为什么即使使用显式退出命令,此脚本仍继续运行.
我有两个文件:
file1.txt 具有以下内容:
aaaaaa bbbbbb cccccc dddddd eeeeee ffffff gggggg
file2.txt 具有以下内容:
111111 aaaaaa 222222 333333 ffffff 444444
script(test.sh)就是这样,两个嵌套循环检查第一个文件的任何行是否包含第二个文件的任何行.如果找到匹配项,则会中止.
#!/bin/bash
path=`dirname $0`
cat $path/file1.txt | while read line
do
echo $line
cat $RUTA/file2.txt | while read another
do
if [ ! -z "`echo $line | grep -i $another`" ]; then
echo "!!!!!!!!!!"
exit 0
fi
done
done
Run Code Online (Sandbox Code Playgroud)
我得到以下输出,即使在打印第一个后它应该退出!!!!!!!!!!:
aaaaaa !!!!!!!!!! bbbbbb cccccc dddddd eeeeee ffffff !!!!!!!!!! gggggg
是不是exit应该完全结束脚本的执行?
我已经尝试了以下代码来生成String的SHA1摘要:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
public class SHA1 {
private static String encryptPassword(String password)
{
String sha1 = "";
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password.getBytes("UTF-8"));
sha1 = byteToHex(crypt.digest());
}
catch(NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
return sha1;
}
private static String byteToHex(final byte[] hash)
{
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
public static void …Run Code Online (Sandbox Code Playgroud) SQLite的有这个"功能",而即使当您创建类型的列INTEGER或REAL,它允许你插入一个字符串到它,即使没有这数字的字符串,如"快跳下狐狸在懒狗".
你如何防止在你的项目中发生这种插入?
我的意思是,当我的代码有一个导致这种插入或更新的错误时,我希望程序发出错误,所以我可以调试它,而不是简单地在我的数据库中静默插入垃圾.
我正在编写一个必须接收以下参数的bash脚本:
理论上有3个参数,但实际上第二个参数会扩展,因此如果通配符匹配多个文件,则参数的实际数量会有所不同:
当我打电话
./myscript file.conf *.data dest_foder
Run Code Online (Sandbox Code Playgroud)
*.data 扩展为与通配符匹配的文件数量,因此等效于:
myscript file.conf this.data that.data so.data dest_foder
Run Code Online (Sandbox Code Playgroud)
在处理之前,我需要验证最后一个参数是文件夹而不是文件。
如果我省略目标文件夹,例如:
myscript file.conf *.data
Run Code Online (Sandbox Code Playgroud)
验证?# -ge 3通过是因为通配符返回多个项目,并且如果存在与通配符匹配的文件夹(例如)this_is_a_folder.data,则扩展如下所示:
myscript file.conf this.data that.data so.data this_is_a_folder.data
Run Code Online (Sandbox Code Playgroud)
该脚本将运行,但是会以一种非预期的方式...它将this.data, that.data and so.data处理文件的已处理版本并将其放置在folder中this_is_a_folder.data。
在将原义“ * .data”参数扩展为匹配的文件名之前,我无法找到一种方法。
我知道如何阅读最后一个论点。
SQLite 表不能有日期或时间戳类型的列。日期以文本或数字形式存储。
原来如此:
我知道您可以在插入之前验证应用程序中的日期,但这不是我想要的,因为这不会阻止使用 SQLite 提示或使用某些 SQLite GUI 工具输入无效日期。