Questions tagged «scripting»

脚本是由解释程序执行而不是编译为独立可执行程序的命令或指令序列。

7
Bash awk命令带引号
我一直在努力寻找这个问题的答案。我正在编写一个快速脚本,以基于awk的输出运行命令。 ID_minimum=1000 for f in /etc/passwd; do awk -F: -vID=$ID_minimum '$3>=1000 && $1!="nfsnobody" { print "xfs_quota -x -c 'limit bsoft=5g bhard=6g $1' /home "}' $f; done 问题在于,该-c参数使用单引号引起来的命令,我无法弄清楚如何正确地对其进行转义,并且也$1无法扩展为用户名。 本质上,我只是想将其输出: xfs_quota -x -c 'limit bsoft=5g bhard=6g userone' /home xfs_quota -x -c 'limit bsoft=5g bhard=6g usertwo' /home 等等...
8 bash  shell  scripting 

6
在小型项目中使用`make`有什么好处?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 我已经看到这make对于大型项目很有用,尤其是在中描述了令人困惑的依赖关系时Makefile,还有助于工作流程。make对于小型项目,我还没有听说过任何优势。有吗

2
如果在dmesg中发现某些内容,如何创建一个无限循环来杀死进程?
我需要创建一个while循环,如果dmesg返回某个/任何值,那么它将终止已确定的进程。 这就是我所拥有的。 #!/bin/bash while [ 1 ]; do BUG=$(dmesg | grep "BUG: workqueue lockup" &> /dev/null) if [ ! -z "$BUG" ]; then killall someprocessname else break fi done 我不知道该! -z不该做[ test -n "$BUG" ] 我认为使用-n表示期望二进制。 我不知道该脚本是否还能工作,因为BUG锁定会中止每个进程,但是dmesg在计算机完全崩溃之前,仍然有几行内容-也许我可以追赶并杀死该进程。
8 linux  bash  scripting 

1
在bash中创建我自己的cp函数
对于一项作业,我被要求巧妙地编写一个bash函数,该函数具有与该函数cp(副本)相同的基本功能。它仅需将一个文件复制到另一个文件,因此无需将多个文件复制到新目录。 由于我是bash语言的新手,所以我不明白为什么我的程序无法正常工作。原始功能要求覆盖文件(如果已存在),因此我尝试实现该功能。它失败。 该文件似乎在多行上失败了,但最重要的是,在这种情况下,它检查了要复制到的文件是否已经存在([-e "$2"])。即使这样,它仍然显示如果满足该条件则应该触发的消息(文件名...)。 谁能帮助我修复此文件,从而可能对我的基本语言理解有所帮助?代码如下。 #!/bin/sh echo "file variable: $2" if [-e file]&> /dev/null then echo "The file name already exists, want to overwrite? (yes/no)" read | tr "[A-Z]" "[a-z]" if [$REPLY -eq "yes"] ; then rm "$2" echo $2 > "$2" exit 0 else exit 1 fi else cat …

4
比较两个URL列表并将新添加的URL打印到新文件中
最初,我将生成两个包含URL列表的文件-我将它们称为old和new。我想比较两个文件,如果文件中有任何URL,但这些URL new不在old文件中,我希望将这些URL 显示在extra_urls文件中。 现在,我已经阅读了一些有关使用diff命令的内容,但是据我所知,这也分析了信息的顺序。我不希望订单对输出有任何影响。我只是希望将多余的URL new打印到extra_urls文件中,无论它们在其他两个文件中的放置顺序如何。 我怎样才能做到这一点?

2
使用空格删除多个文件中的某些字符
我正在尝试重命名目录中的一堆音乐曲目,但出现此错误: 移动多个文件时,最后一个参数必须是目录 这是脚本: for file in * ; do mv $file $(echo $file |sed 's/^.\{5\}//g') done 这适用于没有空格的文件,我将如何修改此脚本?
8 linux  bash  scripting  sed 


4
用if语句awk
我正在尝试使用awk从文件进行打印,但是我的输出为空。到目前为止,这是我的代码 accountNum=$1 while read -r LINE || [[ -n $LINE ]] ; do awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts done < Accounts 我也尝试过这个: accountNum=$1 while read -r LINE || [[ -n $LINE ]] ; do echo $LINE | awk -F',' '{ if($1==accountNum) { print $3.$2 } …
8 shell  scripting  awk 

2
对两个完全独立的事物进行grep并将值分配给独立变量的最有效方法是什么?
CentOS 6.x版 我想将curl,grep的输出用于两个完全独立的字符串,并将它们各自的值分配为变量。什么是最有效的方法(不将输出写入磁盘)? 通常,我会考虑使用类似以下内容的脚本: #!/usr/bin/env bash foo1=$(curl https://domain.com/file.xml | grep string1) foo2=$(curl https://domain.com/file.xml | grep string2) 但这最终要花两遍,而且效率极低。有没有更好的办法?希望解决方案涉及更少的通行证吗?

1
是否可以保证/ usr / bin / env将存在?
我经常会看到脚本以shebang行开头,该行#!/usr/bin/env interpreter_name用于任何解释器,其基本原理是不同的系统可能具有它们需要的解释器才能在不同位置运行。例如,如果我假设python已安装,/usr/bin/python则由于/opt/python某种原因决定安装它的某些用户将无法轻松使用它。 但是显而易见的问题是,是否env可以在/usr/bin/env(或就此而论的任何特定地点)安装任何保证,或者可以说这仅仅是“解决问题”的一种情况? 这个与问题稍微相关的问题有一条评论,说这是一个坏主意,最好将其与解释器的实际路径一起安装并引用单个unix规范,但并不能真正解决该问题。
8 scripting  env 

3
rsync最近x GB
我正在寻找一个命令/脚本,以允许将最近修改的文件(最大)10GB复制到另一台计算机。 因此,如果每个4 GB的文件有4个,则脚本只能传输其中2个文件;如果1GB大的文件有12个,则仅应传输最近的10个文件。

1
使用“ find…-exec sh -c'...'sh {} +”的find命令如何工作?
@StephaneChazelas针对此问答发布了以下解决方案:使用“ find -exec {} +”遇到麻烦。 $ find . -iname "*.extension" -exec sh -c ' exec <command> "$@" <additional parameters>' sh {} + 这到底是怎么回事?具体来说,最后sh {}做什么?似乎只是为了平息find的-exec命令而已,以便它可以做一些事情,即NOOP。 我可以很容易地放在echo {}那儿,它似乎工作得很好。

1
Linux上脚本的功能
如果我想在可执行文件上设置功能(capabilities(7)),CAP_NET_BIND_SERVICE并且该文件是脚本,我是否必须setcap(8)在启动该脚本的解释器上设置功能()还是足以在脚本文件上设置功能()本身? 注意:该问题特别涉及Scientific Linux 6.1,但我认为可以普遍回答。

1
如何判断xscreensaver是否锁定了屏幕?
我正在考虑警报内容,因此决定,如果屏幕被锁定,则我不在那儿,因此我应该将警报推送到手机上。但是,我目前无法确定屏幕是否被锁定。我可以将某些东西与Perl和xscreensaver-command -watch结合在一起,但是我宁愿不必确保该过程始终在运行。好像太重了 有什么我想念的吗?这似乎相当明显。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.