Articles of shell

意想不到的EOF而寻找匹配`“'

当我从命令行执行时,该命令正常工作。 然而,当我从shell脚本执行它时会引发错误 rsync -avz -e ssh –exclude-from=rsync.file –rsync-path="sudo rsync" ostnfe/ ubuntu@mask.compute-1.amazonaws.com:/var/www/ostnfe 来自shell脚本的代码: CMD='rsync -avz -e ssh –exclude-from=rsync.file –rsync-path="sudo rsync" '$1'/ ubuntu@'$AMZ':/var/www/'$2 $CMD 错误: bash: -c: line 0: unexpected EOF while looking for matching `"' bash: -c: line 1: syntax error: unexpected end of file

如何从shell脚本中获取mongo数据库的集合确切列表

我想从mongo数据库中获取集合名称列表。 所以,我在shell脚本中使用以下命令: collections = mongo $dbName –eval "db.getCollectionNames()" 该命令的输出结果是 “MongoDB shell版本:2.2.0连接到:cm_v2 col1,col2,col3,col4” 我想只得到集合名称,如:col,col2,col3,col4。 那么,我应该如何从结果中删除类似版本的输出。

在java程序的不同目录中运行Bash命令

程序说明: 我正在编写一个Java程序,其中当前目录是/ home / user / Desktop。 我想在“location / home / user / project /”中运行一个bash命令“du -s”来查找该文件夹的大小,以便我可以在我的项目中使用该文件夹的大小。 我不能发布整个代码,因为它有一些敏感的数据。 我只是张贴需要的代码。 这是我所做的: import java.io.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.File; public class Exec_in_cur_dir { public static void main(String[] args) { try { StringBuffer output = new StringBuffer(); String Command ="cd /home/user/project"; //Bash Command // […]

如何在远程主机上运行bash函数()? 在Ubuntu中

我正在运行一个bash脚本,但是当我尝试在远程机器上运行函数时,它说 bash: keyConfig: command not found 这是我的脚本: keyConfig() { sed -i.bak -r "/^$1/s/([^']+')([^']+)('.*)/\1$2\3/" $3 } remoteExecution() { ssh ppuser@10.101.5.91 " keyConfig $1 $2 $4 " } remoteExecution

将时间戳添加到shell脚本的cat输出

我有一个小的脚本,从ttyUSB输出到一个文件,我想为每行添加一个时间戳。 从命令行,这就是我想要的一切: $ cat /dev/ttyUSB0 /home/pi/daily_logs/ttyUSSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; } 我的问题是,当我将它添加到脚本一切正常,但awk时间戳不会被添加。 我的脚本行如下所示: cat < /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; } & 任何帮助得到这个将不胜感激。

如何获得system()运行的命令的状态

看我在我的c代码中使用一个系统调用 #include <sys/stat.h> #include <stdio.h> int main(int argc, char *argv[]) { int a = system("./test12.out"); //here if i am giving any wrong commad system("echo $?") printf("system return is %d",a); } 我的当前文件夹中没有任何test12.out文件。 现在输出 sh: ./test12.out: No such file or directory 0 system return is 32512 这里我的shell命令有失败,但我怎么知道在我的c代码? 编辑: 所以我可以这样下去 int main(int argc, char *argv[]) { int a […]

如何从terminal读取date,并与当前date进行比较

我想知道从terminal读取date和使用shell脚本比较当前date的适当方式, 我有下面的脚本, a=`date +%Y-%m-%d` while [ 1 ] ; do echo "Enter Date" read todate if [ $todate < $a ];then break; fi echo "todate greater than curDate" done 它没有按预期运行。 请帮帮我。 UPDATE 这是我的最终版本, #! /bin/bash DATE=$(date '+%s') while [ 1 ] ; do echo "Enter Date[DD MM YYYY]:" read DMY THIS=$(date -d "$Y-$M-$D" '+%s') if […]

用基于匹配组的评估stringreplacestring(优雅的方式,而不是用于…)

我正在寻找一种方法来replace正则expression式匹配的文件的string与另一个string,这些string将从匹配的string中生成/评估。 例如,我想要replace此文件中的时间戳(时间戳+持续时间) 1357222500 3600 … Maybe intermediate strings… 1357226100 3600 … Maybe intermediate strings… … 由人类可读的date表示(date范围)。 到目前为止,我总是使用像Bash这样的shell脚本遍历每行,匹配X行,得到匹配的组string,并在处理后打印行,例如这样(从内存中): IFS=" " for L in `cat file.txt`; do if [[ "${L}" =~ ^([0-9]{1,10})\ ([0-9]{1,4})\ .*$ ]]; then # Written as three lines for better readability/recognition echo -n "`date –date=@${BASH_REMATCH[1]}` – " echo -n "`date –date=@$(( ${BASH_REMATCH[1]} + ${BASH_REMATCH[2]} […]

编写linux shell

我正在学习Unix C并为练习做一些练习。 我目前正在编写我自己的shell,其工作方式类似于linux bash shell。 我下面的代码提供了一个相当基本的shell。 它现在提供I / Oredirect。 我正在尝试添加对pipe道的支持。 最初,我只想添加对单个pipe道的支持。 我试图通过一些在线教程,但不能完全弄清楚从哪里开始。 目前,下面的shell可以处理下面的命令命令。 ls> abc,cat <file1> file2等 #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <string.h> #include <sys/wait.h> #include <fcntl.h> #define TRUE 1 int main(void) { char *arg_list[10]; int status; int counter = 0; int counter2 = 0; pid_t pid; char buf[100]; char inFile[10]; […]

Java Process无法通过Runtime.getRunTime()。exec()获取InputStream

try { String str; Process process = Runtime.getRuntime().exec("bash /home/abhishek/workspace/Pro/run"); InputStream isout = process.getInputStream(); InputStreamReader isoutr = new InputStreamReader(isout); BufferedReader brout = new BufferedReader(isoutr); while ((str = brout.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } 该代码有从进程中获取InputStream的问题,因为如果我从我的terminal运行Shell脚本它运行完全正常,但如果我像这样运行脚本,str始终为空, 我正在使用此代码将Shell脚本的输出直接input到Java中,而不是将脚本输出写入文件中 有没有其他办法可以做到这一点,或者我怎样才能解决问题使用目前的做法