Questions tagged «function»

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


2
如何在Bash中增加局部变量?
数据 1 \begin{document} 3 码 #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 返回,2但我想要3。我通过关于如何在bash脚本中添加数字的答案未成功更改结尾: START2=$((getStart+1)) 如何在Bash脚本中增加局部变量?


2
如何根据旧定义重新定义bash函数?
有什么办法可以根据旧定义重新定义bash函数?例如,我想将以下代码块添加到函数的序言中command_not_found_handle (), # Check if $1 is instead a bash variable and print value if it is local VAL=$(eval echo \"\$$1\") if [ -n "$VAL" ] && [ $# -eq 1 ]; then echo "$1=$VAL" return $? fi 它当前在/etc/profile.d/PackageKit.sh中定义,并由bash启动脚本提供。 这样,我可以在命令提示符处通过简单地键入变量名称来查询环境变量的值(并且前提是不存在该名称的此类命令)。例如 user@hostname ~:$ LANG LANG=en_AU.utf8 我知道我可以复制并粘贴当前定义,然后在中添加自己的更改~/.bashrc,但是我正在寻找一种涉及代码重用的更优雅的方法。 也赞赏实现我的目标或代码改进/扩展的更好方法。
13 bash  function 

2
Shell有效的函数名称字符
对于许多用户来说,使用扩展的Unicode字符是(毫无疑问)有用的。 更简单的shell(灰(busybox),破折号)和ksh会因以下原因而失败: tést() { echo 34; } tést 但是bash,mksh,lksh和zsh似乎允许这样做。 我知道POSIX 有效函数名称使用此Names定义。这意味着此正则表达式: [a-zA-Z_][a-zA-Z0-9_]* 但是,在第一个链接中还说: 一个实现可以允许函数名称中的其他字符作为扩展名。 问题是: 是否接受并记录了此文件? 哪里? 对于哪些壳(如果有)? 相关问题: 它可能在shell函数名称中使用特殊字符吗? 我对在函数名称中使用元字符(>)不感兴趣。 包含“-”的upstart和bash函数名称 我不认为运算符(减号“-”)应该是名称的一部分。
13 bash  shell  zsh  function 

2
Bash脚本在函数中本地回显
在bash脚本中,我尝试将变量尽可能地局部化,然后将需要的内容从波纹管中传递出去 #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" 但是有可能在包含函数自己的回显的同时执行此操作,因此,如果函数具有自己的消息要输出,则不必将它们捕获在变量中 #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable echo "This function is done now" # do not return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" # should only echo …

2
bash函数中的可选参数
我有一个快速创建新的SVN分支的功能,如下所示 function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; } 我用它来快速创建一个新分支,而不必查找并复制粘贴地址和其他内容。但是,对于消息(-m选项),我想使用它,以便如果我提供第三个参数,则将其用作消息,否则将使用“ $ 2的dev分支”的“默认”消息。有人可以解释如何完成吗?

3
退出bash功能,而不是终端
我有一个bash脚本,如下所示,它可以安装zookeeper,但前提是尚未安装。 ##zookeper installZook(){ ZOOK_VERSION="3.4.5" ZOOK_TOOL="zookeeper-${ZOOK_VERSION}" ZOOK_DOWNLOAD_URL="http://www.us.apache.org/dist/zookeeper/${ZOOK_TOOL}/${ZOOK_TOOL}.tar.gz" if [ -e $DEFAULT_INSTALLATION_DEST/${ZOOK_TOOL} ]; then echo "${ZOOK_TOOL} alreay installed"; exit 1; # <<<< here elif [ ! -e $DEFAULT_SOURCE_ROOT/${ZOOK_TOOL}.tar.gz ]; then wgetIt $ZOOK_DOWNLOAD_URL else echo "[info] : $DEFAULT_SOURCE_ROOT/$ZOOK_TOOL already exists" fi sudo mkdir -p /var/lib/zookeeper sudo mkdir -p /var/log/zookeeper tarIt "$DEFAULT_SOURCE_ROOT/$ZOOK_TOOL.tar.gz" sudo chmod …

2
%%在函数名称中表示什么?
查看的输出env,我发现还有以下功能。 BASH_FUNC_mc%%=() { . /usr/share/mc/mc-wrapper.sh } /usr/share/mc/mc-wrapper.sh文件的内容如下。 MC_USER=`id | sed 's/[^(]*(//;s/).*//'` MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$" /usr/bin/mc -P "$MC_PWD_FILE" "$@" if test -r "$MC_PWD_FILE"; then MC_PWD="`cat "$MC_PWD_FILE"`" if test -n "$MC_PWD" && test -d "$MC_PWD"; then cd "$MC_PWD" fi unset MC_PWD fi rm -f "$MC_PWD_FILE" unset MC_PWD_FILE %%函数名称中的字符是什么意思?它们是否使它成为在特定情况下调用的函数,还是让我以不同于其他函数的方式调用它? 我正在使用带有Bash版本4.3.42(1)-发行版(x86_64-suse-linux-gnu)的openSUSE 42.3,如果有什么不同的话。

1
在旨在交互使用的功能中显示使用注释
我在中定义了许多功能.bashrc,旨在在终端中交互使用。我通常在它们前面加一个描述其预期用途的注释: # Usage: foo [bar] # Foo's a bar into a baz foo() { ... } 如果浏览源代码,这很好,但是最好type在终端中运行以快速提示该功能的作用。但是,这(可以理解)不包含注释: $ type foo foo is a function foo () { ... } 是什么让我想到:“如果这些评论持续存在以便type显示出来,那会不会很好?” 并且本着Python的文档字符串的精神,我想到了这一点: foo() { : Usage: foo [bar] : "Foo's a bar into a baz" ... } $ type foo foo …

1
Bash别名,命令中包含空格
我正在尝试创建一个bash别名,别名本身中有一个空格。 这个想法是别名(即con)代表sudo openvpn --config /path/to/my/openvpn/configs/。con使用别名时,这将导致可读命令。 即: `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf` 我知道我不能这样声明别名: con ="sudo openvpn --config /path/to/my/openvpn/configs/"。bash函数在这种情况下会起作用吗?我从未听说过,但是在研究此小问题的解决方案时。

2
如何记录我的自定义bash函数和别名?
问题: 我有多个bash函数和别名。我不记得所有的人把我的头顶部,所以我通常最终会打开我.bash_functions和.bash_aliases档案找到我所需要的。 问题: 如何列出bash提示中的可用功能/别名? 我可以使用注释(如PHPDoc之类的)来记录bash函数/别名吗? 我只是想要一种简单/不错的方式来输出可用的内容而不必打开文件。运行命令并吐出我的函数/别名的动态列表会很酷(使用示例会是一个加号)。:)

1
查看Shell函数的当前定义
因此,我一直在编辑bashrc,尽管有错误的函数定义已更新了bashrc,但我仍打开了一个带有可用功能定义的终端。(因为在我获取更新的bashrc之前,定义不会更改)在这种情况下如何查找工作函数定义?例如,如果我键入: alias function_name 我可以看到该别名的定义。功能上是否有类似的命令?如果不是,是否有命令输出当前终端正在使用的整个bashrc?
11 function  bashrc 

2
您能在这段bash代码中为我解释这三件事吗?
我有一个function在我的.bashrc文件。我知道它的作用,它可以增加X个目录cd 这里是: up() { local d="" limit=$1 for ((i=1 ; i <= limit ; i++)) do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } 但是您能为我解释这三件事吗? d=$d/.. sed 's/^\///' d=.. 为什么不这样做: up() { limit=$1 for ((i=1 ; i <= limit ; …

4
分配和检查bash函数元数据
我经常生成并注册许多bash函数,这些函数可以自动执行我在开发项目中通常执行的许多任务。那一代人取决于我正在从事的项目的元数据。 我想用生成的项目信息来注释函数,方法是: func1() { # This function was generated for project: PROJECT1 echo "do my automation" } 理想情况下,检查定义时我将能够看到注释: $ type func1 func1 is a function func1 () { # This function was generated for project: PROJECT1 echo "do my automation" } 但是在某种程度上,bash似乎在加载函数时(而不是在执行函数时)忽略了注释。因此,注释丢失了,我得到以下结果: func1 is a function func1 () { echo …
10 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.