Questions tagged «shell-script»

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

4
如何POSIX-ly计算字符串变量中的行数?
我知道我可以在Bash中做到这一点: wc -l <<< "${string_variable}" 基本上,我发现的所有内容都涉及<<<Bash运算符。 但是在POSIX shell中,它<<<是未定义的,而且我几个小时都无法找到替代方法。我很确定有一个简单的解决方案,但是不幸的是,到目前为止我还没有找到它。

3
安排每月的最后一天
我从一条指令中了解到如何在一个月的最后一天安排脚本: 注意: 精明的读者可能会想知道如何设置命令才能在每月的最后一天执行,因为您无法将dayofmonth值设置为覆盖每个月。这个问题困扰着Linux和Unix程序员,并催生了许多不同的解决方案。一种常见的方法是添加一个if-then语句,该语句使用date命令检查明天的日期是否为01: 00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ; command1 该命令每天中午12点进行检查,以查看是否是该月的最后一天,如果是,则cron运行命令。 [`date +%d -d tomorrow` = 01 ]工作如何? 陈述正确then; command1吗?
10 shell-script  cron  date  test 

2
SunOS上linux上的find命令是否有替代方法?
find与findSunOS或Solaris上的命令相比,Linux上的命令具有很多选项。 我想使用这样的find命令: find data/ -type f -name "temp*" -printf "%TY-%Tm-%Td %f\n" | sort -r 它在Linux机器上可以很好地工作,但是在-printfSunOS机器上没有相同的命令。我想以"%TY-%Tm-%Td %f\n"格式自定义输出。 请提出SunOS的其他替代方案。

3
每X秒执行一次命令
我希望每10秒执行一次命令,并使其在后台执行(因此消除了watch?)。所有答案均显示如下内容,但这将在11到14秒内执行。如何做到这一点? while true; do # perform command that takes between 1 and 4 seconds sleep 10 done

6
是否可以将“ then”替换为括号?
我首先学习了如何用一种C语言进行编码,以及如何使用 if ( code ) then code fi 这使我很难阅读我的代码(不要问为什么)。有替代品then吗? 像这样: if ( code ) { code } fi

1
用全局模式定义的变量替换Bash
以下示例说明了该问题。为什么FILENAME在使用替换时回显并被视为图案时打印正确? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

2
移动文件,但仅在关闭状态下
我想在关闭后立即移动由外部进程创建的大文件。 这个测试命令正确吗? if lsof "/file/name" then # file is open, don't touch it! else if [ 1 -eq $? ] then # file is closed mv /file/name /other/file/name else # lsof failed for some other reason fi fi 编辑:该文件表示一个数据集,我必须等到它完成移动后才能使另一个程序对其执行操作。这就是为什么我需要知道外部进程是否已使用文件完成的原因。

6
如何从ps命令中提取键值对
我试图从这样的ps命令中提取应用程序名称: ps -af -u sas |grep "java"| grep -v "grep" 并产生以下结果: sas 24431 1 0 Oct10 ? 00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs 我尝试使用,egrep但似乎无法正常工作: ps -af -u sas|grep "java"| grep -v "grep"| egrep -o "-Dapp.name" 如何仅获-Dapp.name取值“ myApp”?

2
在if-else语句中使用grep
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 5年前关闭。 如果输入的字符串不在文件中,为什么我的代码没有输出。当我输入一个字符串但它不在文件中时,没有响应返回,它重新循环回到开头。有人可以告诉我我的代码有什么问题吗? while : do echo "Please enter a string" read input_string echo "Please enter the file name too see if that string is present in it - (Enter .abw after)" read input_string1 if grep -q $input_string $input_string1 ; then echo "Your string has been found" fi done

6
ssh和运行命令的脚本不起作用
下面是脚本。 我想登录几台服务器并检查内核版本。 #!/bin/bash #input server names line by line in server.txt cat server.txt | while read line do sshpass -p password ssh root@$line << EOF hostname uname -r EOF done 我希望输出像.. server1_hostname kernel_version server2_hostname kernel_version 等等.. 我在server.txt中运行了约80个服务器的脚本 我得到的输出就像..... Pseudo-terminal will not be allocated because stdin is not a terminal. Pseudo-terminal …
10 bash  shell-script  ssh 

5
删除文件名中的空格,连字符和下划线?
从目录中的所有文件或选定文件中删除空格,连字符和下划线的好命令是什么? 我将以下命令与Thunar自定义操作一起使用,以对文件名进行压缩: for file in %N; do mv "$file" "$(echo "$file" | tr -s ' ' | tr ' A-Z' '-a-z' | tr -s '-' | tr -c '[:alnum:][:cntrl:].' '-')"; done 但是该命令仅用破折号/连字符替换空格,并用小写的带帽字符。 我在终端中使用以下命令从文件夹中成千上万个文件名中删除空格,并且运行速度非常快: rename "s/ //g" * 同样,它仅删除空格,而不删除连字符/破折号和下划线。 理想情况下,我不需要文件名中的空格,连字符/短划线和下划线。如果该命令可以与Thunar自定义动作一起使用在选定的文件上,那就太好了。

1
在非选项参数之后使用getopts解析选项
我在文件中有一个bash脚本,如下所示nepleaks_upd.sh,我希望以此运行./nepleaks_upd.sh bootstrap --branch off。无法接受--branch,但是它的作用是./nepleaks_upd.sh bootstrap -b off。 usage() { echo "Usage: $0 [prepare | up | down] [-b <on/off>]" 1>&2; exit 1; } case "$1" in bootstrap) while getopts ":b:" o; do case "${o}" in b) b=${OPTARG} if [ ${b} == "off" ]; then echo "git clone https://github.com/iPrayag/dotfiles.git" ## logic …

1
使用inotify监视目录但无法正常工作100%
我已经编写了一个bash脚本来监视特定目录/root/secondfolder/: #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done 当我创建一个名为fourth.txtin 的文件/root/secondfolder/并将其写入内容,保存并关闭时,它输出以下内容: /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt 但是,它不会回显“ close_write”。这是为什么?

3
使用Shell脚本作为虚拟打印机
我有一个Shell脚本,该脚本以PDF文件为参数,并使用其他打印机特定的选项进行打印。如何将此脚本添加为可从GUI选择的虚拟打印机? Shell脚本是一个手动双工脚本,可获取PDF文件,打印偶数页,使用zenity提示用户提示,要求用户翻转页面然后打印奇数页。 我当前的工作流程是: 文件->打印->保存到文件-> tmp.pdf my_duplex_script tmp.pdf rm tmp.pdf 有什么办法使其成为: 文件->打印-> my_script_as_virtual_printer 注意:这是在Linux薄荷13肉桂上。我已经尝试过,gnome-manual-duplex但是对我不起作用。 可以从中打印到PDF文件的GUI对话框 my_duplex_script #!/bin/bash lp_args= while getopts o: opt do case "$opt" in o) lp_args="$lp_args -o $OPTARG" ;; \?) echo >&2 Invalid argument; exit 1 ;; esac done shift `expr $OPTIND - 1` file=$1 page_count=$(pdfinfo "$file" | grep …

2
将脚本输出的副本发送到文件
假设我有一个Zsh脚本,我想让它将输出打印到STDOUT,而且还要将其输出复制(转储)到磁盘上的文件中。 此外,脚本以以下选项开头 set -o xtrace 这迫使它变得冗长,并打印它运行的命令。我也想在磁盘上的文件中捕获此输出。 我的理解是,如果我这样做 ./my_script.sh > log.txt 它只会发送STDOUT到log.txt,但是如果我也希望能够在终端中看到输出怎么办? 我已经阅读了Zsh中的tee和MULTIOS选项,但是不确定如何使用它们。 当我做: ./my_script | tee log.txt 我可以在终端上看到输出,但是该文件log.txt似乎无法捕获所有内容(实际上它几乎捕获不到任何内容)。

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.