【linux – 如何在bash脚本中正确地将文件名传递给其他程序?】教程文章相关的互联网学习教程文章

linux-了解bash脚本语法【代码】

以下bash语法是什么意思:function use_library {local name=$1local enabled=1[[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && enabled=0return $enabled }我对行[[,${LIBS_FROM_GIT},=?,${name},]]不太了解.是某种正则表达式还是字符串比较?解决方法:这是比较变量并防止某些变量未定义/为空的怪异行为的技巧. 您可以使用,或任何其他.最主要的是,它希望将${LIBS_FROM_GIT}与${name}进行比较,并防止其中一个为空的情况. 正如Etan Reisn...

linux-注销和登录时bash脚本的多个实例【代码】

我做了一个简单的脚本,它可以无限循环地工作.看起来像这样:while : do#operationssleep 5 done并将其添加到自动运行程序like this中. 一切正常,但是注销后,我有2个该脚本过程的实例(下一次注销后有3个实例,依此类推).它们中只有一个显示通知,但是它们都运行自己的睡眠过程. 我该怎么做才能解决这个问题?解决方法:注销并不会杀死所有进程.您需要自己杀死该过程.一种方法是在脚本中添加条件终止. 例:#!/bin/bash for proc in $(pg...

linux-从bash脚本中的grep输出扩展环境变量【代码】

我是bash脚本的新手,我只是想使它工作.我想要得到的是一个cd到默认下载目录的脚本,例如/ home / davide / Downloads,然后在Ubuntu中从那里下载文件.我正在获取默认的下载目录,例如:OUTPUT=$(grep DOWNLOAD $HOME/.config/user-dirs.dirs) DIR=$(echo $OUTPUT | cut -f 2 -d "=" | tr "\"" "\n")工作正常. DIR是一个像这样的字符串:$HOME/Downloads当我尝试CD时会出现问题.它的功能类似于:cd $HOME/Downloads这会引发错误,而应该...

linux-Bash脚本,需要帮助循环【代码】

目前,我正在使用此脚本来阻止中国的IP地址:# Create the ipset list ipset -N china hash:net# remove any old list that might exist from previous runs of this script rm cn.zone# Pull the latest IP set for China wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone# Add each IP address from the downloaded list into the ipset 'china' for i in $(cat ./cn.zone ); do ipset -A china $i; done# Resto...

linux-如何使用bash脚本“设置”屏幕【代码】

我正在尝试编写一个bash脚本,以创建具有一组特定窗口的屏幕(软件)会话,并在每个CD上创建cd到特定目录. 这是我到目前为止的脚本:#!/bin/bashkillall screen; screen -AmdS work; screen -S work bash -c "cd myDir";问题是我似乎无法在该会话上更改目录.运行此脚本后,我运行$screen -r并且当前目录仍然是我的默认目录(?/). (我尝试将cd命令更改为touch myFile,并且在运行脚本后该文件在那里)解决方法:尝试以下操作,它将使用bash打开...

linux-如何使用bash脚本将crontab作业添加到crontab?【代码】

我尝试了以下命令,crontab停止运行任何作业:echo“ @reboot / bin / echo’test’> /home/user/test.sh” | crontab- 在Linux中将作业添加到crontab的脚本的正确方法是什么?解决方法:我建议您阅读Cron and Crontab usage and examples . 您可以运行以下命令:? ( printf -- '0 4 8-14 * * test $(date +\%u) -eq 7 && echo "2nd Sunday"' ) | crontab ? crontab -l 0 4 8-14 * * test $(date +\0) -eq 7 && echo "2nd Sunday"...

Linux-Ping摘要未在bash脚本中显示日期【代码】

我正在尝试编写一个小脚本,该脚本将通过ping跟踪网络延迟. 我需要写一个文件,并用日期和时间标记每个ping条目.如果ping时间太长,我需要实时查看响应并停止脚本. 我可以在没有日期的文件中获取ping结果和摘要,以下代码#!/usr/bin/env bashecho "Enter Dealer number: " read deal echo "Enter IP address: " read ip touch ./${deal}_pingtest.txt ping $ip > ./${deal}_pingtest.txt & tail -f ./${deal}_pingtest.txt标准输出结果...

linux-是否可以从bash脚本设置超时?【代码】

这个问题已经在这里有了答案: > How do I limit the running time of a BASH script 4个有时我的bash脚本在没有明确原因的情况下挂起并保持 因此它们实际上可以永远挂起(脚本过程将一直运行,直到我杀死它为止) 是否可以结合bash脚本超时机制,以便在例如1/2小时后退出程序?解决方法:这种仅使用Bash的方法通过将函数作为后台作业运行以强制执行超时,从而将所有超时代码封...

linux-通过bash脚本与多个目录中的文件进行交互【代码】

我生成了一个脚本,该脚本可循环访问多个.csv文件,并将相关文件转换为UTF-8:#!/bin/bashcd /home/user/prod/ charset="text/plain; charset=iso-8859-1"for file in *.csv; doif [[ $(file -i "$file") == "$file: $charset" ]]; theniconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";mv -f "$file.new" "$file"; fi done那行得通,但是我真正想要的是遍历驻留在不同路径中的文件.我试图从设置一个路径开始(而不是定义当前目录)...

linux-检查bash脚本中是否有标准输出重定向【代码】

我需要检查程序的输出是否被重定向;如果是,我需要保留并通过邮件发送. 例:$myprogram -param1 -param2 -param3 > /home/polly/log.txtmyprogram.sh:if 'redirection is not empty'; then cat <redirection name> | mailx -s "This is a test email." polly@gmail.com fi 解决方法:您可以检查stdout是否为终端.当stdout重定向或通过管道传输时,它将不是终端.您可以将test命令与-t选项一起使用以获取以下信息:if [ -t 1 ] ; the...

linux-安全记住bash脚本中的ssh凭证【代码】

这个问题已经在这里有了答案: > Setup and use SSH ControlMaster Session in a Shell Script 1个想象一下,我有一个bash脚本,它通过ssh在远程计算机上执行命令:# Do something here ssh otheruser@host command1 # Do something else ssh otheruser@host command2 # Do most local tasks该脚本提示我多次输入otheruser @ host的凭据.有没有一种安全,简便且可以接受的方...

linux-bash脚本根据修改后的文件日期删除目录【代码】

我正在寻找创建一个bash脚本,该脚本以递归方式遍历目录,并从树的最末端开始按日期检查文件.如果最新文件的日期超过90天,请转到一个目录并检查相同的内容.如果没有超过90天的文件,请删除根目录. 例如:/ftpdir/Site1/folder1/folder2如果文件夹2没有较新的文件,但是文件夹1有,则删除文件夹1,但保留Site1 我已经在AutoIT中编写了此代码,但现在需要将其作为bash脚本使用,我有点迷失了. 谢谢 编辑:我以为我很清楚,但让我澄清一些事情:...

linux-grep在bash脚本中失败,但可在命令行中使用【代码】

bash文件:#!/bin/bash grep -l -r "products" Products/提供输出: No such file or directory当直接从终端提示符运行时,grep -l -r“ products” Products /提供所需的输出,这是包含单词的文件的列表. 我使用echo $SHELL检查该外壳确实是bash,因此应该没有区别.可能是什么原因? (Products /目录包含大约3500个文件). 在Ubuntu 12.04 LTS上运行.解决方法:您的脚本在grep行的末尾包含一个CR.使用dos2unix将其删除.

linux – 如何让AWK使用在Bash脚本中创建的变量【代码】

参见英文答案 > How do I use shell variables in an awk script? 7个我的脚本看起来像这样#!/bin/bash #exampel inputfile is "myfile.txt" inputfile=$1 basen=`basename $inputfile .txt` # create basenamecat $inputfile | awk '{print $basen "\t" $3} # this doesn't print "myfile" but the whole content of it.我上面要做的是在AWK中打印之前创建的名为“basen”的变量.但不知怎的...

如何使用Linux中的终端命令将文件参数传递给我的bash脚本?【代码】

参见英文答案 > How do I parse command line arguments in Bash? 31个所以我的问题是如何使用Linux中的终端命令将文件参数传递给我的bash脚本?目前我正在尝试在bash中创建一个程序,该程序可以从终端获取文件参数并将其用作程序中的变量.比如我跑myprogram –file = / path / to / file in Terminal. 我的计划#!/bin/bash File=(the path from the argument) externalprogram $File (ot...