小编Phi*_*ing的帖子

为什么"如果0;" 不能在shell脚本中工作?

我编写了以下shell脚本,只是为了了解我是否理解使用if语句的语法:

if 0; then
        echo yes
fi
Run Code Online (Sandbox Code Playgroud)

这不起作用.它产生错误

./iffin: line 1: 0: command not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bash shell if-statement

3
推荐指数
2
解决办法
4730
查看次数

两个日期和两次之间的mySQL查询

我想查询一个mySQL表,在两个日期和两个日期之间提取数据.我知道如何使用"之间"调用为单个"日期时间"列执行此操作,但我的列是一个"日期"列和一个"时间"列.我在网上找到的所有解决方案都是针对单个日期时间列.

我的范围从15:30的"day1"到15:14的day1 + 1day

到目前为止,我可以得到以下范围(有效):

SELECT time,
       close 
  FROM intraday_values 
 WHERE date="2005-03-01" 
   and time between "15:30" and "23:59"
Run Code Online (Sandbox Code Playgroud)

但我显然需要合并2个日期和两个日期.我尝试了以下但得到一个错误:

SELECT time,
       close 
  FROM intraday_values 
       between date="2005-03-01" 
   and time="15:30" 
   and date="2005-03-02" 
   and time = "15:14"
Run Code Online (Sandbox Code Playgroud)

有人可以帮我正确地制定查询吗?非常感谢

mysql sql

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

在数百万个csv文件上运行bash脚本

我试图bash在超过100万的csv文件下运行脚本:

#!/bin/bash
new_header="cell,id,too,issue,valid,DPT,RH,TMP,U,V"
sed -i'' "1s/.*/$new_header/" /cygdrive/d/csv/*.csv
Run Code Online (Sandbox Code Playgroud)

但是在运行此代码时,我收到以下错误:

./bash.sh: line 3: 11464 Segmentation fault      (core dumped) sed -i'' "1s/.*/$new_header/" /cygdrive/d/csv/*.csv
Run Code Online (Sandbox Code Playgroud)

我确信有一些方法可以在100万个csv文件上运行脚本,但我还没有找到任何东西.

bash cygwin sed

3
推荐指数
1
解决办法
77
查看次数

程序仍然能够在setuid和setgid之后仅打开root用户文件

我正在编写一个程序,该程序将基于身份验证以不同的用户身份运行。该程序是setuid root,并在删除特权之前使用PAM身份验证。

身份验证后,我正在使用setuid()setgid()放弃特权。但是显然这还不够,因为在调用这些程序后,我的程序仍然似乎只能访问open()root用户文件。

有什么建议么?

#include <unistd.h>
#include <stdio.h>

// Code to drop Priv
int u = 1000, g = 1000;

printf("Starting User %d Group %d\n", (int) getuid(), (int) getgid());
printf("Setting User %d Group %d\n", u, g);
if (setgid(g) || setuid(u)) {
    printf("Could not set uid or gid %d", errno);
    return 0;
}
printf("Have set User %d Group %d\n", (int) getuid(), (int) getgid());
Run Code Online (Sandbox Code Playgroud)

其输出为:

Starting User 0 Group 0
Setting User 1000 Group 1000
Have …
Run Code Online (Sandbox Code Playgroud)

c linux permissions setuid

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

从表中精确选择5行

我有一个奇怪的要求,理想情况下应该在SQL中解决,而不是周围的应用程序.

无论有多少实际可用,我都需要精确选择5行.在实践中,可用的行数通常小于5,并且在极少数情况下它将超过5."额外"行应该null在每列中都有.

该应用程序使用的技术不是Turing Complete.在应用程序代码中,这个要求比你想象的要难得多!为了描述它,该应用程序实际上是一个变换器:它接收一堆查询并吐出报告.所以请理解应用程序不是用传统意义上的"编程语言"编写的.

所以,例如,如果我有一个表:

A | B
-----
1 | X
2 | Y
3 | Z
Run Code Online (Sandbox Code Playgroud)

那么有效的结果就是

A    | B
-----------
2    | Y
1    | X
3    | Z
null | null
null | null
Run Code Online (Sandbox Code Playgroud)

我知道这是一个不寻常的要求.遗憾的是,由于使用了该技术,它在应用程序中无法解决.

理想情况下,这不应该要求更改数据库,但如果没有其他方式可以安排更改.

有什么建议?

sql sql-server

0
推荐指数
1
解决办法
85
查看次数

标签 统计

bash ×2

sql ×2

c ×1

cygwin ×1

if-statement ×1

linux ×1

mysql ×1

permissions ×1

sed ×1

setuid ×1

shell ×1

sql-server ×1