Questions tagged «arguments»

参数通常定义为传递给函数,过程或命令行程序的实际值。

3
如何使用逗号分隔列表作为下一个命令的参数
我有一个脚本s1,输出以','分隔的数字列表1,2,3,4。现在,我想将这些数字s2作为参数提供给脚本,以便s2将在每个数字上运行并在单独的行中输出其结果。例如,如果s2将数字乘以2,这就是我要查找的结果: 2 4 6 8 我现在正在做的是: s1 | xargs -d "," | xargs -n1 s2 但是我觉得我这样做是愚蠢的!所以我的问题是: 正确的做法是什么? 我的解决方案的问题在于,它两次调用xargs并两次对输入进行迭代,这当然对我来说是不合理的。答案xargs -d "," -n1似乎不错,但我不确定是否只重复一次。如果是这样,请在您的回答中确认这一点,我会接受。顺便说一句,我宁愿不使用Perl,因为它仍在迭代两次,而且Perl在许多系统上可能不存在。
9 pipe  xargs  arguments 

2
在shell中间接扩展变量
我需要在bashShell中间接引用变量。 我基本上是想make通过写作做些什么$($(var))。 我尝试使用${$var}哪种方法是最直接的解决方案,bash但随后出现此错误: bash: ${$var}: bad substitution 有没有办法做到这一点? 我所试图做的是遍历所有参数($1,$2,$3,...)来使用迭代变量的程序并没有间接我不能做到这一点。

2
bash如何在处理后从参数中删除选项
我记得在某个地方看到过一个bash脚本case,该脚本使用和shift浏览位置参数列表,遇到参数时解析带有参数的标志和选项,并在解析后将其删除以仅保留裸参数,然后由其余的参数处理。脚本。 例如,在解析的命令行时cp -R file1 -t /mybackup file2 -f,它将首先遍历参数,认识到用户已请求通过进入目录,通过来-R指定目标,-t /mybackup并通过来强制复制-f,然后将其从参数列表中删除,从而该程序file1 file2作为剩余参数进行处理。 但是我似乎无法记住/找到我所看到的任何脚本。我只是想能够做到这一点。我一直在各地搜索,并附加了我检查过的相关页面列表。 该网站上的一个问题专门询问了“顺序无关的选项”,但是单个答案和该问题的答案都没有考虑到像上面这样的情况,即选项与普通参数混合在一起,我认为这是该人特别提及与订单无关的选项的原因。 由于bash的内置getopts似乎停在第一个非选项参数上,因此它似乎不足以解决问题。这就是Wooledge BashFAQ的页面(见下文)解释如何重新排列参数的原因。但是我想避免创建多个数组,以防参数列表很长。 由于shift不支持从参数列表的中间弹出单个参数,因此我不确定实现我所要求的直接方法是什么。 我想听听是否有人有解决方案,可以从参数列表的中间删除参数,而无需创建一个新的数组。 我已经看过的页面: http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_arguments http://mywiki.wooledge.org/BashFAQ/035 在bash shell脚本中使用getopts获取长和短命令行选项 http://wiki.bash-hackers.org/scripting/posparams http://wiki.bash-hackers.org/howto/getopts_tutorial bash参数在$ @中的情况 在bash脚本中实现顺序独立选项的规范方法是什么? 如何处理Shell脚本中的开关?
9 bash  arguments 

3
Shell:在if中使用带有参数的函数
我正在尝试执行以下代码,但是当我尝试在if语句中使用函数时,-bash: [: too many arguments出现错误。为什么会这样呢? 先感谢您! notContainsElement () { local e match="$1" shift for e; do [[ "$e" == "$match" ]] && return 1; done return 0 } list=( "pears" "apples" "bananas" "oranges" ) blacklist=( "oranges" "apples" ) docheck=1 for fruit in "${list[@]}" do if [ notContainsElement "$fruit" "${blacklist[@]}" -a …

2
检测可选函数参数(标量)
考虑以下脚本: function alfa(bravo, charlie) { if (charlie) return "charlie good" else { return "charlie bad" } } BEGIN { print alfa(1, 1) print alfa(1, 0) print alfa(1, "") print alfa(1) } 结果: charlie good charlie bad charlie bad charlie bad Awk是否可以告诉何时未提供参数?

2
重击和参数传递
我有以下简化的bash脚本 #!/bin/bash files=("$@") if [ "X$files" = "X" ]; then files=$HOME/print/*.pdf; fi for file in "${files[@]}"; do ls "$file"; done 如果我将参数(文件名)作为参数传递,则此脚本将打印正确的文件名。另一方面,如果我不传递参数,它将打印 /home/user/print/*.pdf: No such file or directory 为什么在这种情况下不能扩展文件名,我该如何解决?请注意,我使用files=("$@")and "${files[@]}"构造,因为我读到它比通常的“ files = $ *”更可取。
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.