Questions tagged «scripting»

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



2
如何在另一个函数中调用一个函数
我实际上正在使用Shell脚本来监视服务器的资源。我有一个函数,我想知道:如何在主函数内调用第二个函数? 例: funct mainfunct(){ echo "Text to show here" **$secondfunct** } funct secondfunct(){ commands }
12 shell  scripting 

2
在/etc/resolv.conf.d到位的情况下,在/etc/resolv.conf中进行更改的“正确方法”是什么?
在过去,我resolv.conf是静止的,您自己编辑了它。 稍后,DHCP客户端将使用一些静态条目以及从DHCP租约中获得的内容来重写它。 如今,某些发行版(例如我的发行版(Linux Mint 18.1))具有一种/etc/resolv.conf.d包含脚本的多个子目录的机制,而且,我无法一头两用。 那么正确的方法是 指示我要使用还是不使用在DHCP租约中获得的DNS服务器? 是将固定条目添加到resolv.conf中,还是在没有DHCP租用名称服务器时将其添加为后备? 决定文件中的相对顺序? 如果有的话,我不介意编写自己的脚本,我只是不想“与”现有机制“作对”或做重复的工作。

4
使用嵌套循环退出shell脚本
我有一个带有嵌套循环的shell脚本,只是发现“退出”并没有真正退出脚本,而只是退出了当前循环。还有另一种方法可以在某些错误情况下完全退出脚本? 我不想使用“ set -e”,因为存在可接受的错误,并且需要进行大量重写。 现在,我正在使用kill手动终止进程,但是似乎应该有更好的方法来执行此操作。
11 bash  shell  scripting  exit 


2
脚本出现问题,文件名中带有空格
我有一个脚本,该脚本将来自远程主机的文件压缩回本地。有时文件名包含空格。scp不喜欢其文件名中的空格。由于某种原因,我尝试处理空间的结果未产生正确的scp路径。 码: PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg scp $PATH Me@10.1.10.33:/Users/Me/Desktop 结果是 Cannot find directory: var/root/Documents/MyFile Cannot find directory: OG-v1.2.3.pkg 将PATH括在引号中"$PATH"会产生相同的错误。 将空间交换为逃逸空间也不起作用,尽管据我所知应该这样: ESC_PATH=${PATH/' '/'\ '} 尽管打印转义的路径表明编辑有效: echo $ESC_PATH > /var/root/Documents/MyFile\ OG-v1.2.3.pkg

2
循环输出管道可防止局部变量修改
我正在尝试编写一个简单的bash函数,该函数将许多文件和/或目录作为其参数。这应该: 完全限定文件名。 对它们进行排序。 删除重复项。 打印所有实际存在的内容。 返回不存在的文件数。 我有一个脚本,几乎可以执行我想要的操作,但是无法进行排序。按原样返回脚本的返回值是正确的,但是输出不是(未排序和重复的)。如果我取消注释所示的| sort -u语句,则输出正确,但返回值始终为0。 注意:欢迎使用更简单的解决方案来解决问题,但问题实际上是为什么在我的代码中会发生这种情况。也就是说,为什么添加管道似乎停止脚本增加变量的作用r? 这是脚本: function uniqfile { local r=0 for arg in "$@" do readlink -e "$arg" || (( ++r )) done #| sort -u ## remove that comment return $r }

2
压缩文件时不包括目录
我有一个bash脚本,它执行以下操作: zip -0 ../backup/backup.zip \ -r ./* \ -x \*CVS\* \ -x *Thumbs.db* \ 它要备份的目录是一个SVN归档文件(以前是CVS)。我一直无法获得排除.svn及其内容的信息。排除.svn(递归遍历整个树)的最干净方法是什么?
11 bash  scripting  zip 

1
如何制作将输出发送到进程的shell脚本
我目前正在屏幕上运行服务器控制台程序,因为我既需要阅读它,也需要偶尔发送命令。 我想在后台将应用程序作为守护程序运行(使用init启动/停止)。 我可以tail -f记录日志,但是那不能让我向过程发送输入。 有什么方法可以进行设置,以便我既可以读取也可以发送输入,但仍在后台运行它? 我还希望能够从不同的进程向守护程序发送输入(例如,可以发送“ Stop \ n”命令的shell脚本)。

3
替换文件时保持(或还原)文件权限
我有一个命令,该命令接受文件作为参数,修改文件,然后将其写入第二个参数中指定的文件名。我将调用该程序modifyfile。 我希望它可以“就地”运行,所以我编写了一个shell脚本(bash),将其修改为一个临时文件,然后将其移回: TMP=`mktemp` modifyfile "$original" "$TMP" mv -v "$TMP" "$original" 不幸的是,该文件的权限受到了破坏。使用默认权限重新创建该文件。 有没有办法告诉mv命令覆盖目标而不更改其权限?或者,是否有一种方法可以保存原始用户,组和权限并还原它们?

5
加载用户桌面后如何从脚本中进行检测?
我有一个守护程序,它以bash实现并通过cron和@reboot选项运行,该守护程序显示桌面处于非活动状态。脚本如下(出于测试目的,时间简短): #!/bin/bash P_STATE=0 while : do sleep 5 if [ $P_STATE == 0 ]; then [ `xprintidle` -ge 25000 ] && P_STATE=1 && wmctrl -k on else [ `xprintidle` -le 25000 ] && P_STATE=0 done 问题:例如,如果用户仍然在登录屏幕中,xprintidle并且wmctrl由于尚未加载桌面而失败。为了避免这种情况,我在脚本的开头放置了以下几行: while: do sleep 10s [ -n `who | grep "$USER"` ] && break done …

5
使用统计信息提供触摸的时间戳
我正在尝试对某些文档进行OCR(从Windows共享上的Linux命令行)。OCRing的过程已找到,而我已经使用find命令使文件正确地通过循环传输了。 但是,我需要保留原始时间戳以进行修改。我目前正在尝试使用stat并触摸如下: #!/bin/bash OLDIFS=$IFS IFS=$(echo -en "\n\b") for f in `find /mnt/library/Libra/Libra/Ashfords -name "*.pdf"` do ORIGTS=`stat -c "%Y" $f` sudo /opt/ABBYYOCR9/abbyyocr9 -rl English -pi -if $f -f PDFA -paemImageOnText -pafpr original -of $f touch -t $ORIGTS $f done IFS=$OLDIFS 当然,触摸命令会失败。单独运行命令我注意到“ stat -c”是这样的: 1334758696 这就像我不知道约会一样。我感觉好像已经接近了,但是无法解决如何将我的约会日期转换为触摸友好版本。是某种形式的几秒钟?
11 bash  scripting  stat 


4
使用SCP(副本)时如何保存密码?
使用SCP将文件从另一台计算机拉到我的计算机时,我遇到了问题。文件已成功传输,但每次都要求输入密码。我想以方式运行此SCP命令cronjob,如何保存此自动化的密码? scp user@abc.com:/usr/etc/Output/*.txt /usr/abc/ user@abc.com's password:
11 scripting  scp 

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.