我想编写一个Bash脚本来处理文本,这可能需要一个while循环.
例如,C中的while循环:
int done = 0;
while(1) {
...
if(done) break;
}
Run Code Online (Sandbox Code Playgroud)
我想写一个与之等效的Bash脚本.但我通常使用的和我读过的所有经典例子都表明:
while read something;
do
...
done
Run Code Online (Sandbox Code Playgroud)
它没有提供任何有关如何做的帮助while(1){}
和break;
,这是明确界定,并广泛应用于C,和我没有为标准输入读取数据.
任何人都可以帮助我使用上述C代码的Bash等价物吗?
我正在尝试从我的apache日志中提取IP地址,计算它们并对它们进行排序.
无论出于何种原因,分拣部分都很糟糕.
这是命令:
cat access.* | awk '{ print $1 }' | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
输出示例:
16789 65.X.X.X
19448 65.X.X.X
1995 138.X.X.X
2407 213.X.X.X
2728 213.X.X.X
5478 188.X.X.X
6496 176.X.X.X
11332 130.X.X.X
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这些值没有真正排序.我还试图在行(sed 's/^[\t ]*//g'
)的开头删除空白并使用sort -n -t" " -k1
,这不会改变任何东西.
任何提示?
我使用的是ubuntu 12.04.每次我启动我的bash终端,每次输入命令(并按回车键),我收到此消息:
错误:ld.so:LD_PRELOAD中的对象'/usr/lib/liblunar-calendar-preload.so'无法预加载:忽略.
真奇怪.那么LD_PRELOAD用于什么环境变量?现场背后发生了什么?
谢谢.
我的好友和我最近一直在阅读leveldb源代码.我们遇到了这个问题.在leveldb db/skiplist.h文件中,有一个构造函数声明:
explicit SkipList(Comparator cmp, Arena* arena);
Run Code Online (Sandbox Code Playgroud)
我知道带有单个参数的显式构造函数意味着没有构造函数参数的隐式类型转换.但是具有显式关键字的双参数构造函数意味着什么?这是C++ 11的新规则吗?
谢谢.
引用自动加载类:
许多编写面向对象应用程序的开发人员为每个类定义创建一个 PHP 源文件。最大的烦恼之一是必须在每个脚本的开头编写一长串所需的包含内容(每个类一个)。
在 PHP 5 中,这不再是必要的。spl_autoload_register() 函数注册任意数量的自动加载器,使得当前未定义的类和接口能够自动加载。通过注册自动加载器,PHP 在因错误而失败之前有最后一次加载类或接口的机会。
那么问题来了,如果一个php文件中有多个类,是否适合autoload使用呢?或者我必须使用require filepath
声明吗?
例如,我在 Protobuf\Client.php 下有一个协议文件:
<?php
namespace Protobuf;
class A {
...
}
class B {
...
}
Run Code Online (Sandbox Code Playgroud) 我一直在阅读MySQL 5.5的源代码,并对宏HAVE_PSI_INTERFACE感到困惑,它出现在整个项目的许多源文件中.
例如,在源文件storage/example/ha_example.cc中,有以下代码:
#ifdef HAVE_PSI_INTERFACE
static PSI_mutex_key ex_key_mutex_example, ex_key_mutex_EXAMPLE_SHARE_mutex;
static PSI_mutex_info all_example_mutexes[]=
{
{ &ex_key_mutex_example, "example", PSI_FLAG_GLOBAL},
{ &ex_key_mutex_EXAMPLE_SHARE_mutex, "EXAMPLE_SHARE::mutex", 0}
};
static void init_example_psi_keys()
{
const char* category= "example";
int count;
if (PSI_server == NULL)
return;
count= array_elements(all_example_mutexes);
PSI_server->register_mutex(category, all_example_mutexes, count);
}
#endif
Run Code Online (Sandbox Code Playgroud)
那么HAVE_PSI_INTERFACE意味着什么?具体来说,PSI代表什么?什么是宏HAVE_PSI_INTERFACE用于?
谢谢.
所以我正在尝试从 Windows 迁移到 Linux。今天我试图用 Emacs 而不是 Windows IDE 来编码和编译东西。这是我的示例代码:
#include <iostream>
using namespace std;
int main() {
cout << "HELLO" << endl;
}
Run Code Online (Sandbox Code Playgroud)
我使用 esc-x-> compile-> g++ -o hello hello.cpp 从 emacs 编译
在终端中,我使用 './hello' 执行 hello。然后我将代码更改为 'cout << "HOLA FFS" << endl;' 并尝试再次使用 g++ -o hello hello.cpp 进行编译。编译完成没有错误,但是当我尝试从终端执行 hello 时,输出是“HELLO”而不是“HOLA FFS”。
为什么要这样做?
我来过这个问题.码:
>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
Run Code Online (Sandbox Code Playgroud)
我期望的结果是:
[0, [0, 1, 2], 2]
Run Code Online (Sandbox Code Playgroud)
这是python列表的无限分配吗?幕后的是什么?
谢谢.
我有一个问题是在主机(依赖于CPU)和网络(大端)之间转换字节顺序.这些都是API(在Linux的"arpa/inet.h"中)我发现可以解决我的问题.
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
Run Code Online (Sandbox Code Playgroud)
除了一件事,它们只处理无符号整数(2个字节或4个字节).
那么有没有办法处理有符号整数的情况?换句话说,如何实现以下功能(API)?
int32_t htonl(int32_t hostlong);
int16_t htons(int16_t hostshort);
int32_t ntohl(int32_t netlong);
int16_t ntohs(int16_t netshort);
Run Code Online (Sandbox Code Playgroud) 我正在阅读带有glibc源代码的标准库rand()函数实现. stdlib/random_r.c,第359行
int
__random_r (buf, result)
struct random_data *buf;
int32_t *result;
{
int32_t *state;
if (buf == NULL || result == NULL)
goto fail;
state = buf->state;
if (buf->rand_type == TYPE_0)
{
int32_t val = state[0];
val = ((state[0] * 1103515245) + 12345) & 0x7fffffff;
state[0] = val;
*result = val;
}
else
{
int32_t *fptr = buf->fptr;
int32_t *rptr = buf->rptr;
int32_t *end_ptr = buf->end_ptr;
int32_t val;
val = *fptr += *rptr;
/* Chucking least random bit. …
Run Code Online (Sandbox Code Playgroud)