Articles of SH

将jps -vl命令的输出分配给shell脚本中的variables

我需要将一个命令的输出分配给一个variables。 我试过的命令是: #!/bin/bash JAVA_PROCESSES=`jps -vl | grep -v 'sun.tools.jps.Jps' | grep -v 'hudson.remoting.jnlp.Main' | grep -v grep` NUMBER_OF_JAVA_PROCESSES=`echo $JAVA_PROCESSES | wc -l` echo $NUMBER_OF_JAVA_PROCESSES echo $JAVA_PROCESSES .. 当我在上面尝试时,所有java进程grepped被分配到一行中的JAVA_PROCESSESvariables。 进程不会被换行。 因此$ NUMBER_OF_JAVA_PROCESSES总是给我1。 另外$ NUMBER_OF_JAVA_PROCESSES显示1,即使没有进程被分配给JAVA_PROCESSES,因为$ JAVA_PROCESSES中的空行。 请build议一种分配由新行分隔的grepped进程的方法。

使用–quiet选项标志运行rpmbuild命令将导致广泛的debugging信息

我希望最小化我的rpm构build过程的输出。 我运行以下命令: rpmbuild -ba –quiet "/tmp/yaneeve/kit/linux/rpm_spec" 我的系统是: Linux yaneeve-lnx-82-5 2.4.21-47.ELsmp #1 SMP Wed Jul 5 20:38:41 EDT 2006 i686 i686 i386 GNU/Linux rpmbuild版本是: RPM version 4.2.3 我的rpm spec文件的%prep部分是: %prep . $LOGGER_FUNC_FILE_LOCATION/logger.sh SCRIPT_NAME='rpm_spec-prep' SOURCE_DIR=`readlink -f -n %{_sourcedir}` PACKAGE_DIR=`readlink -f -n %{_pkg_script_dir}` BUILD_PRODUCT_DIR=`readlink -f -n %{_build_product_dir}` RESOURCE_DIR=`readlink -f -n %{_resource_dir}` log $SCRIPT_NAME INFO "In the prep stage […]

在Linux上安装Java EE SDK时出错

我确实安装了JDK,并且还在$ PATH上放了$ JDK_HOME / bin。 但是,我仍然有安装Java EE的问题。 你们能给我一些提示吗? 谢谢。 dav@Bruno:~$ ls [some stuff…] 33511405_3645.jpg glassfish stuff bea hplip-3.11.12-plugin.run temp bin hpscan001.png Templates C03_08.txt java_ee_sdk-6u4-jdk7-linux.sh Tomcat c4c jdk1.7.0_10 Ubuntu One [some stuff2…] dav@Bruno:~$ echo $PATH /home/dav/jdk1.7.0_10/lib:/usr/share/java:/home/dav/jdk1.7.0_10:/home/dav/jdk1.7.0_10/bin:/home/dav/Fluent.Inc/斌:/家庭/ DAV /斌:/ usr / lib中/ lightdm / lightdm:在/ usr / local / sbin中:在/ usr / local / bin目录:/ usr / […]

理解脚本和程序之间的区别

所以我用bash和sh写了一些全面的脚本,但只有几个小的java程序。 我已经阅读了几本java书籍,只是觉得它不是坚持。 我发现C和C ++更容易理解,因为一些奇怪的原因,然后脚本就变得非常简单。 我理解脚本和编程之间的一个很大的差距就是理解程序是如何处理的。 例如,在脚本中,我可以执行以下操作: #!/bin/sh var="my variable" echo "$var" 显然这将打印my variable 。 我明白,这基本上就像我把这个input到shell中的命令一样, echo是命令, $var是echo的参数,脚本只是处理这些命令。 但是,如果我在java中这样做: String var = "my variable" System.out.println(var); 计算机如何处理命令或者这些命令有什么区别? 对于第一行, String是一个命令给jvm和var的参数? 我知道这些是语法上的差异,我理解代码是如何工作的,但在底层,shell脚本如何处理命令与jvm有什么区别? 还是我看着这完全错了?

如何一次读取一行多行variables?

我有一个variables,我们可以调用largeVar并具有以下内容: var1="blah1" var2="blah2" var3="blah3" 所以如果我做一个printf "$largeVar"我会得到上面的确切内容。 但是,我需要将这些variables添加到我的环境中,而无需创build属性文件。 所以我试图这样做: for var in "$largeVar" do eval "$var" done 但这只是评估$largeVar而不是每一行。 所以我试了一下: while cat "$largeVar" | read var do printf "$var" done 这似乎工作…有点(我只testing与printf看看会发生什么),但最后一行说echo : File name too long 有没有办法做我想做的事情?

将Windows bat文件转换为Linux sh shell脚本

我正在尝试parsing和合并大量包含Ordnance Survey地址数据的csv文件。 操作系统提供了一个batch file,但我希望能够在Linux服务器上运行它,因为这些文件是巨大的。 我已经尝试从bat文件转换为ssh使用这个非常手指南 。 但是我正在努力调用这个过程。 有人能够检查什么是错的? 原来的脚本(我在这里截掉了一点) FOR /F %%A IN ('dir *.csv /b/s') DO (CALL :process "%%A" "%%~NA") @rem — merge the individual record identifier files copy *_10_Records.csv Master_10_Records.out copy *_11_Records.csv Master_11_Records.out copy *_15_Records.csv Master_15_Records.out copy *_21_Records.csv Master_21_Records.out del *_Records.csv @rem — add header records to the individual record identifier files copy […]

用groovy在linux shell执行long命令?

如何用groovy执行长命令? 当我在我的linuxterminal上执行这个命令时,我得到了我想要的进程的正确进程ID。 使用groovy我得到一个空的回报。 这是我已经尝试过的: def p = "ps aux | grep 'unit 1' | grep -v grep | awk '{print $2}'".execute() p.waitFor() println p.text // this is empty, but it shouldn't groovy的正确执行应该如何? 如何在groovy中获得正确的进程ID?

在shell脚本中返回值争用条件

在使用wget的shell脚本中获取它的返回值。 例: wget www.google.com if [ $? = 0 ] then echo "success" else echo "fail" fi Linux运行大量的shell脚本,包括上面的一个。 假设在shell脚本中执行了wget之后,操作系统将会控制其他一些shell脚本,当再次开始执行shell脚本时,那么$ ? 返回值不会是wget返回值。 有没有什么办法可以避免在Linux中的shell脚本返回值竞争条件? 问候, Sukhdeep辛格

Linux命令variablesreplace。 帮助表示赞赏

我想压缩所有文件/目录,同时排除variables$ excludes中列出的几个。 但是下面的代码不排除这些文件。 请帮忙! 谢谢! excludes='"dir1/*" "dir2/*" "dir3/*"' zip -r zipfile * -x $excludes

按计划linux复制目录

我正在寻找一个脚本的帮助,这将允许我复制一个目录的内容,或者整个目录到一个时间表的另一个目录,或者当新的文件到达源代码时。 例如: /stuff/folder1/file.txt 复制到: /stuff/folder2/file.txt 无论是新文件到达还是重复计划。 我使用Centos机器。