小编Tul*_*ova的帖子

Sql*plus总是返回退出代码0?

每当我使用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)

oracle scripting sqlplus exit-code

18
推荐指数
3
解决办法
3万
查看次数

Java Calendar WEEK_OF_YEAR不符合ISO-8601标准?

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标准的周编号?

java iso date

9
推荐指数
1
解决办法
737
查看次数

Bash出口不会退出

我想知道为什么即使使用显式退出命令,此脚本仍继续运行.

我有两个文件:

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应该完全结束脚本的执行?

bash exit abort nested-loops

8
推荐指数
2
解决办法
1万
查看次数

Java SHA1输出与Linux的sha1sum命令不同

我已经尝试了以下代码来生成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)

java linux sha1

8
推荐指数
1
解决办法
2330
查看次数

如何避免在SQLite表中插入错误的数据类型?

SQLite的有这个"功能",而即使当您创建类型的列INTEGERREAL,它允许你插入一个字符串到它,即使没有这数字的字符串,如"快跳下狐狸在懒狗".

你如何防止在你的项目中发生这种插入?

我的意思是,当我的代码有一个导致这种插入或更新的错误时,我希望程序发出错误,所以我可以调试它,而不是简单地在我的数据库中静默插入垃圾.

sqlite debugging error-handling data-consistency

5
推荐指数
1
解决办法
1132
查看次数

在扩展到匹配文件之前如何访问原义通配符?

背景:

我正在编写一个必须接收以下参数的bash脚本:

  1. 文件名(包含一组规则的文件)
  2. 文件名列表(要处理的文件,可以使用通配符)
  3. 目标文件夹(将存储文件的经过处理的版本)

理论上有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”参数扩展为匹配的文件名之前,我无法找到一种方法。

澄清:

我知道如何阅读最后一个论点。

  • 但是我如何知道最后一个参数是否被明确传递,或者该产品是通配符扩展?

parameters bash arguments command-line-arguments

4
推荐指数
1
解决办法
1785
查看次数

如何防止将无效日期插入 SQLite 表中?

SQLite 表不能有日期或时间戳类型的列。日期以文本或数字形式存储。

原来如此:

  • 如何防止将 2 月 31 日等无效日期插入表中?

我知道您可以在插入之前验证应用程序中的日期,但这不是我想要的,因为这不会阻止使用 SQLite 提示或使用某些 SQLite GUI 工具输入无效日期。

database sqlite validation datetime

2
推荐指数
1
解决办法
900
查看次数