相关疑难解决方法(0)

shell脚本可以设置调用shell的环境变量吗?

我正在尝试编写一个shell脚本,在运行时,将设置一些将在调用者的shell中保留的环境变量.

setenv FOO foo
Run Code Online (Sandbox Code Playgroud)

在csh/tcsh中,或

export FOO=foo
Run Code Online (Sandbox Code Playgroud)

在sh/bash中只在脚本执行期间设置它.

我已经知道了

source myscript
Run Code Online (Sandbox Code Playgroud)

将运行脚本的命令而不是启动新的shell,这可能导致设置"调用者"环境.

但这里有一个问题:

我希望这个脚本可以从bash或csh调用.换句话说,我希望任何一个shell的用户都能够运行我的脚本并改变他们的shell环境.所以'source'对我来说不起作用,因为运行csh的用户无法获取bash脚本,而运行bash的用户无法获取csh脚本.

有没有合理的解决方案不需要在脚本上编写和维护两个版本?

bash shell csh tcsh

396
推荐指数
8
解决办法
46万
查看次数

如何在Apache Bench中发送多个查询字符串?

ab -n 1 -c 1 http:// localhost:2020/welTo.do?pxtId = 3000007937&superDo = jack

我得到第一个查询字符串的答案,但我也得到了

'superDo'不被识别为内部或外部命令,可操作程序或批处理文件.

请帮我

TIA

关心thiru

apache benchmarking apachebench

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

适当的FIFO客户端 - 服务器连接

我正在尝试编写简单的客户端和服务器C程序,在不同的终端中相互通信.

服务器必须创建公共fifo并等待客户端.与此同时,客户端正在创建自己的fifo,服务器的响应将通过该fifo来实现.客户端的任务是向服务器发送队列创建的名称,并返回ls命令的结果.

我确实搜索了一个答案,例如:fifo-server-program,example-of-using-named-pipes-in-linux-bash,how-to-send-a-simple-string-between-two-programs-使用管道.我从第三个链接的代码开始,慢慢修改它.

我现在得到的是一个客户端从用户那里获取输入,将其发送到服务器并将其接收回来.但它只能工作一次.我不知道为什么.主要功能的主体在下面.我将不胜感激任何帮助.

编辑: 我搞定了!:D代码在下面,也许它会帮助某人.

server.c代码:

#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main(int argc, char* argv[])
{
    int fds[2];
    char tab[BUFSIZ];
    int fd, n;

    char *myfifo = "/tmp/serwer";
    char *myfifo2 = "/tmp/client";

    pipe(fds);
    mkfifo(myfifo,0666);

    while(1)
    {
        fds[0]=open(myfifo2,O_RDONLY);
        fds[1]=open(myfifo,O_WRONLY);

        read(fds[0],tab,BUFSIZ);

        if (strcmp("klient",tab)==0) {
            printf("Od klienta: %s\n",tab);
            fd=open(tab,O_WRONLY);

            if(fork()==0)
            {
                dup2(fds[1],1);
                close(fds[1]);
                execlp("ls","ls","-l",NULL);
                close(fds[0]);
                close(fds[1]);
            }
            else
            {
                dup2(fds[0],0);
                n = read(fds[0],tab,BUFSIZ);
                write(fd,tab,n);
                close(fds[0]);
                close(fds[1]);
            }
        }
        memset(tab, …
Run Code Online (Sandbox Code Playgroud)

c linux client-server mkfifo

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

如何在 shell 管道中使用不同的文件描述符?

stdout我正在处理一个脚本,它首先调用一个嘈杂的(对和)程序进行大量诊断stderr,然后使用其他工具处理其输出。

该程序的冗长使得不可能简单地将其标准输出发送到管道,因此目前我们使用临时文件——我想结束这种做法。

我们可以/tmp/foo要求程序将数据写入,而不是写入 - 它会,没有问题(例如,/dev/fd/N它不需要文件)。seek

stdout它当前发送到和的噪音stderr可以继续到那里——操作员已经习惯了看到它,并且如果它消失就会感到震惊......

但是我如何安排描述符N存在并发送到下一个程序中stdin

noisy -o /dev/fd/N ?????| filter -i /dev/stdin
Run Code Online (Sandbox Code Playgroud)

如果这需要bash,那就这样吧,但当然,我更喜欢适合整个 sh 系列的解决方案。

unix bash pipeline file-descriptor sh

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

是否可以将.gzip文件导入sqlite /我可以在导入时跳过某些列吗?

我尝试使用.import,但它似乎限制了csv和分隔文件.是否可以导入gzip文件?或者至少从命令行管道?

另外,我可以跳过像mysql"LOAD DATA INFILE"这样的不想要的列吗?

sqlite import gzip

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