Questions tagged «function»

有关在Unix和Linux环境中使用功能的问题(主要但并非唯一地是shell脚本)。有关使用Python,Perl,Ruby等进行编程的问题,应在Stack Overflow上提出。

7
Bash中存在编程的“回调”概念吗?
几次阅读编程知识时,我都遇到了“回调”概念。 有趣的是,我从来没有找到一个我可以称呼为“回调函数”或“清晰”的解释(对于我来说,几乎我读过的任何解释似乎与其他解释都足够不同,我感到困惑)。 Bash中存在编程的“回调”概念吗?如果是这样,请用一个简单的Bash小示例进行回答。
21 bash  function 

2
如何在emacs中获取当前缓冲区的文件名?
我想念的有关Vim的主要功能之一是,它总是将当前文件的文件名保存在%缓冲区中(更多信息)。这样可以轻松启动命令,例如: ;; compile current file :! gcc % ;; source current file (useful when I'm editing .vimrc :source % ;; get the size of current file :! du -sh % ;; etc, etc... 我想在emacs(版本24,如果有任何区别)下具有类似的功能,即具有一种简单的方法来插入在当前缓冲区中打开的文件的名称。 我想做的事的例子 在这里,我描述一些基本用例,以便在我觉得需要这种捷径时可以更好地进行解释 编译:当我输入M-x compileemacs时,要求我输入一个编译命令。我想gcc (current-buffer)轻松进入。 加载文件:编辑.emacs文件时,我想立即加载它以测试更改。我的做法是M-x load-file,然后我总是拼出名字. e m a c s。我想要一个捷径。 启动外部进程:我du -sh仅作为示例说明,我希望在使用以下命令执行Shell命令时也可以使用该快捷方式M-! 我到目前为止发现的 这个问题在这里关于U&L。给出的答案基本上显示了在哪里可以找到缓冲区的文件名,以便可以将其添加到kill-ring。这并不是我要找的东西,我不想在使用文件名之前先手动杀死它。(这两个答案中描述的解决方案在我的emacs中似乎都无法正常工作,并且需要额外的击键操作,这使它们有些痛苦)。 …
19 emacs  function 




5
如何为每个目录设置别名?
假设您有一个别名go,但希望它在不同的目录中执行不同的操作? 它应在一个目录中运行cmd1,但应在另一个目录中运行cmd2 顺便说一句,我已经有一个别名可以切换到上述目录,所以可以将go别名分配附加到foo别名上吗? alias "foo=cd /path/to/foo" 在OSX上使用bash(?)。

2
别名和功能
从bash手册 有关别名的定义和使用的规则有些混乱。在执行该行中的任何命令之前,Bash总是读取至少一行完整的输入。读取命令时将扩展别名,而不是在执行时将别名扩展。因此,与另一条命令在同一行上出现的别名定义在读取下一行输入之前不会生效。该行中别名定义之后的命令不受新别名的影响。执行功能时,此行为也是一个问题。 读取函数定义时会扩展别名,而不是在执行函数时会扩展别名,因为函数定义本身就是复合命令。作为结果, 在函数中定义的别名只有在执行该函数之后才可用。为安全起见,请始终将别名定义放在单独的行上,并且不要在复合命令中使用别名。 似乎两个句子“在读取函数定义时展开别名,而不是在执行函数时展开”和“在函数执行之后才可用的函数中定义的别名”似乎是相反的。 您能分别解释它们的意思吗?
17 bash  alias  function 

5
有状态的bash功能
我想在Bash中实现一个函数,该函数在每次调用时都会增加(并返回)计数。不幸的是,这似乎很简单,因为我正在子外壳中调用该函数,因此它无法修改其父外壳的变量。 这是我的尝试: PS_COUNT=0 ps_count_inc() { let PS_COUNT=PS_COUNT+1 echo $PS_COUNT } ps_count_reset() { let PS_COUNT=0 } 这将按如下方式使用(因此需要从子shell调用函数): PS1='$(ps_count_reset)> ' PS2='$(ps_count_inc) ' 这样,我将获得一个编号的多行提示: > echo 'this 1 is 2 a 3 test' 可爱。但由于上述限制,因此无法使用。 不可行的解决方案是将计数写入文件而不是变量。但是,这会在多个同时运行的会话之间产生冲突。当然,我可以将Shell的进程ID附加到文件名中。但是我希望有一个更好的解决方案,它不会使我的系统中包含很多文件。

1
如何在xargs中使用定义的函数
这是我的代码 #!/bin/bash showword() { echo $1 } echo This is a sample message | xargs -d' ' -t -n1 -P2 showword 因此,我有一个函数showword,该函数会回显您作为参数传递给该函数的任何字符串。 然后,我xargs尝试调用该函数,一次将一个单词传递给该函数,然后并行运行该函数的2个副本。不起作用的是xargs无法识别该功能。如何实现我要执行的操作,如何使xargs与该函数一起使用showword?
16 bash  xargs  function 

3
在PATH中运行与现有函数同名的可执行文件
有时,我定义了一个函数,该函数会遮盖可执行文件并调整其参数或输出。因此,该函数与可执行文件具有相同的名称,并且我需要一种方法,该方法如何从该函数运行该可执行文件而无需递归调用该函数。例如,要自动运行fossil diffthrough colordiff和less -R我的输出,请使用: function fossil () { local EX=$(which fossil) if [ -z "$EX" ] ; then echo "Unable to find 'fossil' executable." >&2 return 1 fi if [ -t 1 ] && [ "$1" == "diff" ] ; then "$EX" "$@" | colordiff | less -R return fi …
16 bash  path  function 

1
执行功能参数提供的命令
我试图在bash脚本中创建一个函数方法,该函数方法执行由参数提供给该方法的命令。 意思是这样的: special_execute() { # Some code # Here's the point where the command gets executed $@ # More code } special_execute echo "abc" 我已经尝试过我$@,"$@",$*,"$*"我怎么能这样做呢?

4
下面声明的调用函数
是否可以调用下面在bash中声明的函数? 例 if [ "$input" = "yes" ]; then YES_FUNCTION elif [ "$input" = "no" ]; then NO_FUNCTION else exit 0; fi YES_FUNCTION() { ..... ..... } NO_FUNCTION() { ..... ..... }

2
如何传递参数以在bash脚本中起作用?
我想编写一个可以从带有许多不同变量的脚本中调用的函数。由于某些原因,我在执行此操作时遇到很多麻烦。我读过的示例始终仅使用全局变量,但就我所知,这不会使我的代码更具可读性。 预期的用法示例: #!/bin/bash #myscript.sh var1=$1 var2=$2 var3=$3 var4=$4 add(){ result=$para1 + $para2 } add $var1 $var2 add $var3 $var4 # end of the script ./myscript.sh 1 2 3 4 我尝试$1在函数中使用诸如此类,但随后只需要调用整个脚本的全局范围即可。基本上,我正在寻找类似的东西$1,$2诸如此类,但是在函数的本地上下文中。如您所知,函数可以使用任何适当的语言来工作。

3
在Bash中显示功能主体
我在.bashrc文件中设置了几个功能。我只想显示函数的实际代码而不执行它,以便快速引用某些内容。 有什么办法,我们可以看到函数定义吗?
14 bash  function 


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.