Articles of 脚本

在batch file中使用空格?

我需要运行batch file来设置许多文件夹的权限。 我们有以下文件夹结构 然后在每个客户端文件夹中,我们有几个子文件夹,例如Folder1 \ Client1 \ SubFolder1 Folder1 \ Client1 \ SubFolder2 Folder1 \ Client1 \ SubFolder3 我需要重置上面示例中所有子文件夹的权限,并在名为permissions.bat的文件中包含以下代码 for /f %%g in ('dir "f:\temp\" /ad /b') do for /f %%a in ('dir %%~fg /ad /b') do icacls "%%~fg\%%a" /grant:r domain\mygroup:(OI)(CI)M 这工作正常,但对于包含空格的客户端和子文件夹不起作用。 例如 Folder1\Client1\Sub Folder 1 会显示为 Folder1\Client1\Sub\ 紧跟着系统找不到指定的文件错误。 有任何想法吗? 顺便说一下,这是在2003服务器上运行。

使用通配符(*)将文件复制到bash脚本中的文件夹 – 为什么它不工作?

我写一个bash脚本创build一个文件夹,并将文件复制到该文件夹​​。 它从命令行工作,但不是从我的脚本。 这里有什么问题? #! /bin/sh DIR_NAME=files ROOT=.. FOOD_DIR=food FRUITS_DIR=fruits rm -rf $DIR_NAME mkdir $DIR_NAME chmod 755 $DIR_NAME cp $ROOT/$FOOD_DIR/"*" $DIR_NAME/ 我得到: cp: cannot stat `../food/fruits/*': No such file or directory

Awksearch文件的string

我已经实现了一个函数来search一个文件中的一个string,它运作良好。 我想知道如何修改它以searchstring中的所有列? awk -vs=$1 -vc=$2 '$c ~ s { print $0 }' $3 谢谢

如何在bash中间接地分配一个variables来从Standard In,File和执行输出中获取多行数据

我在这里和其他地方发现了许多片段,回答了这个问题的一部分。 我甚至设法以低效的方式在很多步骤中做到这一点。 如果可能的话, 我真的很想find执行这个任务的单行执行 ,而不是分配给一个variables,并复制它几次来执行任务。 例如 executeToVar () { # Takes Arg1: NAME OF VARIABLE TO STORE IN # All Remaining Arguments Are Executed local STORE_INvar="${1}" ; shift eval ${STORE_INvar}=\""$( "$@" 2>&1 )"\" } 总的来说,如果$ executeToVar SOME_VAR ls -l * #实际上会填充SOME_VAR和从其余参数中取出的ls -l *命令执行的输出。 但是,如果命令在最后输出空行,(对于例如- echo -e -n '\n\n123\n456\n789\n\n'应该在开始和结束处具有2个新行)这些被bash的子执行过程所剥夺。 我在其他类似的post中看到,通过在stream的末尾添加一个标记“x”来解决这个问题,例如将子执行转化为如下forms: eval ${STORE_INvar}=\""$( "$@" 2>&1 ; echo […]

Bash IP IF THEN ELSE声明

我需要从几台机器上运行一个脚本,但是每台机器都需要执行独特的命令。 我以为bash脚本能够做到这一点,但是我对这个部门不太了解。 我需要的代码看起来类似于下面的代码(或将它)。 我知道,这是远远不够完美或function,但它真的只是有助于expression我在找什么。 有人可以帮我用这个脚本? #/bin/bash IP= ifconfig eth0 | grep inet | grep -v inet6 | cut -c 7-17 If [$IP -eq 192.168.32.1] then mkdir IPFolder-1 more code… else if [$IP -eq 192.168.32.2] then mkdir IPFolder-2 more code… else if [$IP -eq 192.168.32.5] then mkdir IPFolder-5 more code…

Bash脚本创build符号链接到共享库

我认为这个问题对于你的shell脚本怪物是相当容易的。 我正在寻找最优雅和最简单的方式来创build符号链接到Unix的共享库通过bash shell脚本。 我需要的是从“libmythings.so.1.1,libotherthings.so.5.11”等共享库文件列表开始,获取创build的符号链接,例如: libmythings.so -> libmythings.so.1 -> libmythings.so.1.1 libotherthings.so -> libotherthings.so.5 -> libotherthings.so.5.11 库文件位于包含其他文件(如其他shell脚本)的目录中。 编辑 :好,“ldconfig -nN”。 可以正常工作,但是我还需要链接,没有在“.so”之后附加的库的主要编号,至less有一个库,因为一个或多个库是来自Java的JNI调用的入口点,所以当一个库通过System.loadlibrary(“libraryname”)的方式实例化,它期望一个名为“libraryname.so”的库,而不是“libraryname.so.X”。 只有ldconfig -nN的解决scheme可以工作,如果有Java部分的解决方法。

如何使用awk来提取引用的字段?

我在用 awk '{ printf "%s", $3 }' 从空格分隔的行中提取一些字段。 当领域里面有空格时,我会得到部分结果。 请任何机构提出解决scheme?

在Sh / Bash和php中parsingconfiguration参数的最佳/最简单的方法

我得到了每个PHP项目(大约25!),一些sh脚本,可以帮助我进行部署,回购同步,数据库导出/导出等常规任务。 sh脚本对于我pipe理的所有项目都是相同的,所以必须有一个configuration文件来存储依赖项目的不同参数: # example conf, the sintaxys only needs to be able to have comments and be easy to edit. host=www.host.com administrator_email=guill@company.com password=xxx 我只需要find一个干净的方式,从sh脚本中读取(parsing)这个configuration文件,同时也可以从我的PHP脚本中读取相同的参数。 无需使用XML。 你知道这个好的解决scheme吗? 吉列尔莫

可以在RPM spec文件中“包含”其他文件吗?

在RPM规范中是否有一种“包含”指令? 我无法通过Googlesearchfind答案。 动机 :我有一个RPM规范模板,构build过程使用版本,修订版本和其他特定于构build的数据进行修改。 这是目前由sed完成的。 我认为如果规范将包含特定于构build的定义文件(这将由构build过程生成),那么将会更清洁,因此我不需要在规范中进行search和replace。 如果没有include ,有没有一种习惯的方式来做到这一点(相当普遍,我相信)的任务?

当一个信号来到时,杀死bash脚本前台儿童

我正在用这样的bash脚本包装一个fastcgi应用程序: #!/bin/bash # stuff ./fastcgi_bin # stuff 由于bash仅在前台脚本结束时执行信号陷阱,所以我不能仅仅kill -TERM scriptpid因为fastcgi应用程序将保持活跃状态​​。 我试过把二进制文件发送到后台: #!/bin/bash # stuff ./fastcgi_bin & PID=$! trap "kill $PID" TERM # stuff 但是,如果我这样做,显然标准input和标准输出没有正确的redirect,因为它不与lighttpds mod_fastgi连接,前台版本确实工作。 编辑:我一直在看问题,这是因为bashredirect/标准错误,当程序在后台启动,所以任何避免这种方式应该也解决了我的问题。 任何提示如何解决这个问题?