草庐IT

BASH_SOURCE

全部标签

linux - 防止在子 shell 中调用 bash 函数的输出

如果我在bash中调用一个函数,并且该函数本身被设计为使用printf将消息输出到终端,我该如何抑制该功能。请允许我进一步解释。通常我会有一个主脚本。该脚本调用一个函数。该函数执行其正常工作并使用printf输出到终端。我正在尝试创建一个替代选项,您可以说,在后台运行该函数并且不输出任何内容。通常我会想做以下事情:FUNCTION&>/dev/null2>&1这将在后台运行正常功能并丢弃所有输出。一开始似乎可行。通常出现消息的地方是空白,主脚本完成运行。不过,一旦回到提示符,函数(循环处理许多不同的事情)就会完成并开始输出到提示符下的终端。想法? 最佳答案

c - 如何在 bash 脚本中调用 C 程序并将其返回值存储到变量中?

我有一个bash脚本,我在其中询问用户一些输入,然后我想调用C程序几次,并对返回值求和。请注意,我的C程序中的main函数也有一些printf语句,它返回一个整数值。这是我的bash脚本的一部分:#!/bin/bashencBER=0//SomeothercodewhereIreadthevaluesfromtheuserforiin$frames;dotempEncBER=$(./enc_ber$bytes$snr$modulation$channel$alamouti)encBER=$((encBER+tempEncBER))doneecho"TotalBERis:"$encBER

linux - 在 bash 中暂时禁用 'set-e'/'set -o errexit'?

这个问题在这里已经有了答案:Howtoignorereturnvaluedifferentthen0whenIhaveset-e?(2个答案)关闭7年前。我有一个脚本使用killall来确保应用程序在启动之前尚未运行:#!/bin/bashset-esome_commandanother_commandsudokillallmyapp#thiscausesthescripttofailifmyappisn'trunningsleep10myappstart但是,如果myapp没有运行,killall将退出脚本,因为它会返回一个错误。解决此问题的一个方法是暂时禁用set-oerrexit

linux - 如何进入ubuntu docker容器的bash?

我想运行一个ubuntu容器并输入bash:[root@localhostbackup]#dockerrunubuntubash[root@localhostbackup]#ubuntu容器直接退出。如何输入bash? 最佳答案 使用-i和-t选项。示例:$dockerrun-i-tubuntu/bin/bashroot@9055316d5ae4:/#echo"HelloUbuntu"HelloUbunturoot@9055316d5ae4:/#exit参见:DockerrunReference$dockerrun--help|eg

linux - 出现错误 : set +e does not seem to do the job 时自动退出 bash shell 脚本

虽然20年来我都知道shell脚本不关心错误,但我一直对这种默认情况下的粗心大意感到好笑。即使您明确要求他们不要吞下错误并遵循crashearly原则,这仍然不会发生。引用Automaticexitfrombashshellscriptonerror,set+e似乎没有完成这项工作,这是一个简短的例子:#!/bin/bash-vxset+eapt-getinstallnonexisting1apt-getinstallnonexisting2set-e输出:#!/bin/bash-vxset+e+set+eapt-getinstallnonexisting1+apt-getinstal

linux - 如何在 bash 中重命名包含反斜杠的文件名?

我得到了一个tar文件,解压后,有很多文件命名如下ab\cd\e\fg\h我想将他们的名字更正到子目录中的文件中,例如ab/cd/e/fg/h当变量包含反斜杠时,我会遇到一个问题,它会更改原始文件名。我想写一个脚本来重命名它们。 最佳答案 参数扩展是必经之路。bash您拥有所需的一切,无需使用find等外部工具.$toucha\\bc\\d\\e$ls-ltotal0-rw-r--r--1ghotistaff011Jun23:13a\b-rw-r--r--1ghotistaff011Jun23:13c\d\e$forfilein*\

linux - 使用 Bash 在给定的特定数字范围内生成随机 float

有人可以帮我在bash(shell)中生成具有给定数字范围的随机float吗?我在下面找到了命令,但他们还有其他选择吗?(使用awk或$rand命令。)jot-p201 最佳答案 如果您有可用的GNUcoreutils,您可以:seq0.011|shuf|head-n1其中0为开始(含),.01为增量,1为结束(含)。 关于linux-使用Bash在给定的特定数字范围内生成随机float,我们在StackOverflow上找到一个类似的问题: https://

linux - Bash 脚本不继续读取文件的下一行

我有一个shell脚本,可以将执行的命令的输出保存到CSV文件中。它从以下格式的shell脚本中读取必须执行的命令:ffmpeg-i/home/test/videos/avi/418kb.avi/home/test/videos/done/418kb.flvffmpeg-i/home/test/videos/avi/1253kb.avi/home/test/videos/done/1253kb.flvffmpeg-i/home/test/videos/avi/2093kb.avi/home/test/videos/done/2093kb.flv可以看到每一行都是一个ffmpeg命令。但

windows - 将shell函数移植到cmd.exe : Is it possible to automatically source scripts on startup?

我正在移植一个Linux工具集,它经常使用shell函数来提供某些功能。当您启动一个新的shell并包括诸如更改工作目录之类的内容时,这些功能会自动获取,这对于独立程序来说几乎是不可能的,因为子进程无法更改其父进程的环境。例如,有一个函数cdbm可以将工作目录更改为之前加入书签的目录。现在我想在Windows上做同样的事情,但我受困于cmd.exe。据我所知,脚本可以移植到jscript、vbscript或普通批处理,这应该不是问题。但是我如何确保它们在启动时自动获取源代码并存在于shell环境中? 最佳答案 根据helpcmd:I

linux - bash 中的简单正则表达式解析

我想解析一个日志文件(log.txt),其中包含与这些类似的行:2010-10-1907:56:14URL:http://www.website.com/page.php?ID=26[13676]->"www.website.com/page.php?ID=26"[1]2010-10-1907:56:14URL:http://www.website.com/page.php?ID=44[14152]->"www.website.com/page.php?ID=44"[1]2010-10-1907:56:14URL:http://www.website.com/page.php?ID=1