问题标签 [bash-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
315 浏览

bash - 导出函数中的陷阱被静默忽略

此 Bash 脚本按预期运行。

test_this.sh

它打印

但是,当我尝试导出此功能时,它无法捕获。

test_this2.sh

在命令行中获取并运行它:

结果是

陷阱去哪儿了?

0 投票
2 回答
535 浏览

bash - 为什么shell脚本不接受第一个参数

我是 unix shell 脚本的新手。我正在尝试使用参数执行示例函数,但 shell 不将第一个参数识别为第一个参数,而是将其识别为第二个。

给出未收到的输出函数

它应该给的地方

0 投票
1 回答
47 浏览

bash - 带格式的 Bash 函数

我在我的 .bashrc 文件中使用以下内容作为从外部 LDAP grep 信息的函数,但希望它输出几个值,但每个值都在自己的行上

理想情况下,它会输出如下内容:

像这样的东西。

想法,建议赞赏!

0 投票
3 回答
765 浏览

bash - 用于处理目录中除目录之外的所有点文件的 Bash 函数

我正在寻找创建一个 bash 函数来过滤选定目录中的所有点文件(无目录)。我只需要文件名,而不是完整路径。

目前,我只有这个命令:

它打印除目录之外的所有文件。现在我仍然必须排除非点文件。因此,我尝试将输出通过管道传输到 grep,如下所示:

它似乎没有用。->

你们有一个优雅的解决方案吗?

谢谢!

0 投票
1 回答
36 浏览

bash - Bash:将多行函数结果并排格式化

我有三个函数可以消化access.log我服务器上的文件。

单独使用时,它们都可以正常工作。所有三个输出 2 小列数据。

现在我正在寻找创建另一个名为的函数report,它将简单地使用printf它的格式化可能性来打印带有标题的 3 列数据,每列都是我的三个第一个函数的结果。像这样的东西:

问题是格式不是我想要的;它水平打印列而不是并排打印。

任何帮助将不胜感激。

0 投票
1 回答
3931 浏览

linux - 在 bash tee 中,将函数变量设为本地,我该如何转义?

我坚持使用 bash scipt,它应该同时写入标准输出和文件。我在其中使用函数和一些变量。每当我尝试将函数重定向到文件并使用 tee 在屏幕上打印时,我无法使用我在函数中使用的变量,因此它们以某种方式成为本地变量。这是一个简单的例子:

输出:

提前致谢!

编辑: 回应@Etan Reisner 建议使用 var 2>&1 > >(tee $LOGV)

这种构造的唯一问题是日志文件没有收到所有内容......

0 投票
1 回答
99 浏览

xcode - 触发需要执行的脚本sh的别名

初学者,一直在阅读和尝试很多想法,现在有点沮丧。

学习别名和bash函数

这一切都开始了,因为我正在努力学习 swift 上周出现了一个错误,这让我陷入了数小时的混乱。但最终发现有关转储派生数据的其他修复程序以清除缓存以及清理和构建。为什么不一口气把它们都做完。

所以在不得不这样做之后,我觉得必须有一种方法可以使用 exe 函数来做到这一点。我正在使用带有 el cap 的 MacBook Pro

然后我遇到了别名。一个全新的野兽出现了。在某处阅读以创建 aliases.sh 并将 bash_profile 指向那里。所以我做到了。我掌握了基础知识。并试图将其放入 aliases.sh 中的一个函数中,但这不起作用。所以我试图创建一个不同的 .sh 并从 aliases.sh 触发它。终端不喜欢那样。不断出现错误,我摆脱它们的唯一方法就是删除它们并从头开始。已经这样做了几次。

这就是这里的描述是我拥有并且正在尝试做的事情。

一切都很顺利,直到我输入最后一行。以及随之而来的 bash 问题。这就是我在 xcodeClean.sh 中的内容。不得不放照片。无法想出我们复制粘贴的方法而不会造成巨大的混乱。

xcodeReset.sh /br

所以我尝试从 .sh 中取出 bin/bash,尝试将 bash 放在 /users/ 前面,但正如您可能知道的,每当我运行终端时,我从一开始就有错误。我所做的任何事情都无法超越他们。我能回到干净的新终端外观的唯一方法是删除 xcodeReset 和别名并重新开始。现在我可以继续从记事本中复制和粘贴该代码。但我知道有办法绕过这个小恶魔。我在这里和其他论坛找到了 xCode 的清洁器。我只是想让它用一个简单的别名运行。

我在这里很绿色,可以解决我知道可能的事情。如果您有任何帮助,我将不胜感激。太多的夜晚彻夜寻找答案。

0 投票
1 回答
102 浏览

git - bash函数忽略git clone命令的点

我正在与一个不会克隆到当前目录的 bash 函数搏斗,它正在创建一个项目文件夹:

cloneproject() { git clone git@bitbucket.org:codyc54321/$1.git . ;}

我在分号之前有一个点,但是在一个名为“bookwormbuddy”的目录中运行它会添加一个新的项目文件夹,就好像你在没有点的情况下运行克隆一样:

然而,当我从终端运行相同的命令时,它就像我习惯的那样工作:

我需要这个,因为我出于某些原因将项目命名为不同的存储。我怎样才能让 ubuntu 尊重这个点?谢谢

0 投票
2 回答
212 浏览

bash - 如何发送带有消息的命令以向 bash 函数回显成功?

我编写了一个函数来检查命令是否成功执行,如果没有,则抛出错误。

假设我有以下命令要执行给定的错误:

所以基本上,类似于以下内容:

但是,我得到a.sh: line 3: This worked: command not found

我怎样才能在echo这里正常工作?

0 投票
1 回答
77 浏览

bash - 将参数转义到 bash 函数

首先,我将描述问题。我经常将文件从我的 linux 桌面复制到我的 android 平板电脑。出于我不想进入的原因,我发现最简单的方法是在我的平板电脑上运行 sshDroid(一个 ssh 服务器),并使用scpshell 复制文件。该scp命令采用以下形式:

这个表达式中唯一改变的是文件名,这很容易通过制表符完成来实现。甚至IP地址都没有改变。由于我经常上传文件,我非常希望不要一遍又一遍地输入相同的字符。为此,我想我会编写一个 shell 函数并将其附加到.bashrc. 我写的函数如下:

它的用法应该是:

但是当我尝试它时,我得到以下输出:

看起来 bash 在将文件名传递给函数之前会自动对文件名进行转义,并且 scp 命令由于名称中的空格而将其视为多个文件名。

我的问题是:如何保留参数中的反斜杠,或者如果失败,我如何在函数中重新转义它?在摆弄了一段时间之后,我非常想编写一个简单的 python 脚本并将其放入 /usr/local/bin。我还缺少其他一些 bash-native 解决方案吗?