Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

4
sed为什么给我一个关于未终止的s的错误?
我在bash脚本中有一组sed替换项,并且遇到有关未终止的s命令的错误。sed行如下所示: sed -n -e "s/TMPFOO1/$FOO1/" -e "s/TMPFOO2/$FOO2/" -e "s/TMPFOO3/$FOO3/" -e "s/TMPFOO4/$FOO4/" -e "s/TMPFOO5/$FOO5/" /home/foo/template > /home/foo/template/finishedresult 但是由于某种原因,bash不喜欢这样,我得到了一个关于 sed: -e expression #4, char 69: unterminated `s' command 我在这里想念什么?我如何让SED输入变量?在我看来,他们都被解雇了。

2
有没有简单的方法来创建FreeBSD rc脚本?
我在FreeBSD监狱里使用命令运行服务器: /usr/sbin/daemon /path/to/script.py 此刻,我必须在每次重新启动机器并启动监狱时都运行此命令。我希望此命令从开始/etc/rc。有没有一种简单的方法可以为daemon命令创建FreeBSD rc脚本? 更新:我通读了有关rc脚本的BSD文档,并从中创建了以下脚本/etc/rc.d/pytivo: #!/bin/sh . /etc/rc.subr name=pytivo rcvar=pytivo_enable procname="/usr/local/pytivo/pyTivo.py" command="/usr/sbin/daemon -u jnet $procname" load_rc_config $name run_rc_command "$1" 这可以在监狱开始时启动我想要作为守护程序的python脚本...(给定pytivo_enable="YES"在/etc/rc.conf),但是rc脚本不知道守护程序是否正在运行(它认为不是在何时运行),并且当我尝试启动它时会给出警告: [root@meryl /home/jnet]# /etc/rc.d/pytivo start [: /usr/sbin/daemon: unexpected operator Starting pytivo. [root@meryl /home/jnet]# 因此它很接近,并且可以工作,但是我觉得我应该能够获得比这更好的功能。

4
在bash(或其他)中设置变量环境变量
我希望脚本读取包含要设置的环境变量的键/值对的文件,然后进行设置。 到目前为止,我有这个: #!/bin/bash cat $1 | while read kv do key=${kv%=*} val=`echo ${kv#*=} | sed 's/^"\|"$//g'` export $key="$val" done 我想读取这样的文件: XAUTHLOCALHOSTNAME="localhost" DISPLAY=":0" XAUTHORITY="/tmp/some-XAuthority" 我只需要在脚本的作用域内将这些变量放在作用域中,因此无需解决在脚本中为父作用域设置变量的问题。 通过测试,我认为我的问题出在export $key="$val"哪里,因此我只需要替换该行即可。

3
如何启用CPU温度保护措施
我的桌面有一个讨厌的习惯。当我有多个高强度应用程序正在运行并且我的CPU在一段时间内处于最大使用状态时,核心温度会升高并且计算机会自动关闭。 有没有一种方法可以在后台监视(编写脚本)我的CPU温度并在其达到一定温度时发出某种警告? 我正在使用dwm作为窗口管理器运行Opensuse。我通常sensors用来查看我的CPU温度。


6
如何创建每个月命名的目录?
我想为每个月创建一个目录名称。我知道,在玩了一些shell之后,我知道: date -d 1/01 +%b # Gives Jan date -d 2/01 +%b # Gives Feb . date -d 12/01 +%b # Gives Dec 因此,我使用了花括号扩展,echo {1..12}/01并尝试了xargs它: echo {1..12}/01 | xargs -n 1 -I {} date -d {} +%b 但这失败了:/(此后我想申请mkdir)。我怎样才能做到这一点?




5
在Bash数组上使用参数替换
我有要读入Bash数组的file.txt文件。然后,我需要删除空格,双引号以及每个条目中除第一个逗号以外的所有内容。这是我走了多远: $ cat file.txt 10,this 2 0 , i s 30,"all" 40,I 50,n,e,e,d,2 60",s e,e" $ cat script.sh #!/bin/bash readarray -t ARRAY<$1 ARRAY=( "${ARRAY[@]// /}" ) ARRAY=( "${ARRAY[@]//\"/}" ) for ELEMENT in "${ARRAY[@]}";do echo "|ELEMENT|$ELEMENT|" done $ ./script.sh file.txt |ELEMENT|10,this| |ELEMENT|20,is| |ELEMENT|30,all| |ELEMENT|40,I| |ELEMENT|50,n,e,e,d,2| |ELEMENT|60,se,e| 除逗号情况外,哪种效果都很好。我知道有很多方法可以给这只猫换皮,但是由于这是其中较大的脚本,所以我真的很想使用参数替换到达此处: |ELEMENT|10,this| |ELEMENT|20,is| |ELEMENT|30,all| |ELEMENT|40,I| …

2
如何从多个文本源的第一行创建数组?
我有一个指向文件的路径数组,每个文件都有多行文本。我想产生一个数组,其中填充了每个处理的文件的第一行,如下所示: # this.txt first line is [Test this] # another.txt first line is [Test another] paths=( ./this/path/this.txt ./another/path/another.txt ) for i in ${paths[@]}; do read -r line < $i lines+=$line done 最多我在数组中只得到一个值。我似乎无法从for循环中获取要查找的数组。我尝试了许多变体,并且很难弄清我要去哪里。

6
检查是否存在多个目录
我要检查多个目录的存在,说dir1,dir2并且dir3,在工作目录。 我有以下 if [ -d "$PWD/dir1" ] && [ -d "$PWD/dir2" ] && [ -d "$PWD/dir3" ]; then echo True else echo False fi 但是我怀疑这样做有更优雅的方法。不要假定目录名称中存在模式。 目的是检查一些目录是否存在以及其他目录是否不存在。 我正在使用Bash,但首选可移植代码。

2
在Bash脚本中被这个`find`命令混淆了吗?
我有一个bash脚本,该脚本由无法再解释其含义的人创建,用于自动对文件夹进行定位和备份。目前,我对最后一行感到困惑: find '/home/_backups/pokebrawl' -mtime +6 -type f -delete 完整脚本如下。 #!/bin/bash #Purpose = Backup of Important Data #Created on 17-1-2012 #Author = Hafiz Haider #Version 1.0 #START TIME=$(date +"%m-%d-%Y-%T") FILENAME=pokebrawl-$TIME.tar.gz SRCDIR=/home/servers/brawl/world DESDIR=/home/_backups/pokebrawl tar -cpzf $DESDIR/$FILENAME $SRCDIR find '/home/_backups/pokebrawl' -mtime +6 -type f -delete #END

2
在Debian或Ubuntu中安装软件包之前,请检查是否存在多个依赖项
我已经知道我可以通过运行以下命令来检查存储库中是否存在在Debian或Ubuntu中安装软件包所需的多个依赖关系: apt policy first-package second-package ... last-package 该命令还告诉我当前是否已安装每个软件包。 我的问题是如何快速检查在我当前未安装的受支持版本的Debian或Ubuntu中是否存在多个依赖包。因为我当前没有安装该操作系统,所以无法检查依赖包是否在本地和离线存在,但是我想检查所需的依赖包是否存在于终端的默认存储库中。 此信息的一种可能用途是在安装最新版本的Ubuntu或将现有操作系统升级到最新版本之前,检查是否也可以在最新版本的Ubuntu中安装在Ubuntu中安装的应用程序。

2
将文件添加到tbz文件
我正在寻找一种更新数千个.tbz存档文件的方法,因此我将使用Shell脚本进行此操作。我需要向每个文件添加一个文件。 我的问题是,有没有一种更快的方法,而无需提取每个tbz的内容,然后使用包含的tar中包含的新文件进行重新压缩?这些命令是什么样的? 谢谢

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.