Questions tagged «variable»

变量是一个名称,如果正确地选择了具有符号含义的名称,则会包含一个或多个值。如果您的问题是特定于在shell脚本中使用变量的,请使用此标记(如果要询问编程语言中的变量,则可能应该在StackOverflow上询问)


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

1
用通配符分配的变量中的参数扩展
我的当前文件夹(MA502)中有两个文件,它们的名称是- MA502_TAAGGCGA-TCGCAGG_L001_R1_001.at.fastq MA502_TAAGGCGA-TCGCAGG_L001_R2_001.at.fastq 我有很多这样的文件夹-例如MA503,MA504等,我想遍历这些文件夹。 我使用通配符分配变量名- Forward=*R1*.at.fastq Reverse=*R2*.at.fastq 我想在脚本中处理这些文件,并希望将输出替换.at为.atqt,以便最终名称看起来像- MA502_TAAGGCGA-TCGCAGG_L001_R1_001.atqt.fastq MA502_TAAGGCGA-TCGCAGG_L001_R2_001.atqt.fastq 我试过了 awk 'script' $Forward > ${Forward/.at/.atqt} 我的最终文件名看起来像- *R1*.atqt.fastq 而不是我的期望 MA502_TAAGGCGA-TCGCAGG_L001_R1_001.atqt.fastq 我已经根据需要在UNIX上学到了所有东西,所以我不确定如何处理变量名。任何帮助表示赞赏!

6
测试后如何保持上次退出状态
测试后是否可以保持最后的命令退出状态($?)不变? 例如,我想做: command -p sudo ... [ $? -ne 1 ] && exit $? 最后一个exit $?应返回sudo退出状态,但始终返回0(测试的退出代码)。 没有临时变量,是否可以这样做? 另一个示例进一步说明: spd-say "$@" [ $? -ne 127 ] && exit $? 在这种情况下,我只想找到第一个命令(退出代码!= 127)就退出。而且我想用实际的spd-say退出代码退出(可能不是 0)。 编辑:我忘了提一下,我更喜欢POSIX投诉解决方案以获得更好的可移植性。 我在脚本中使用此结构,在脚本中我想为同一命令提供替代方法。例如,请参阅我的crc32脚本。 临时变量的问题在于它们可能会遮盖其他变量,并避免必须使用长名称,这不利于代码的可读性。

3
使用| $ variable中的竖线字符使它成为bash中的另一个参数;如何逃脱呢?
我有一个这样的bash脚本 export pipedargument="| sort -n" ls $pipedargument 但是它给出了错误 ls: |: No such file or directory ls: sort: No such file or directory 似乎将的内容"| sort -n"视为传递给的参数ls。 我如何才能将其转义,以便将其视为常规管道命令? 我试图有条件地设置$pipedargument。我想我可以有条件地执行命令的不同版本,但仍然想知道是否有办法使上述工作正常进行?

2
对两个完全独立的事物进行grep并将值分配给独立变量的最有效方法是什么?
CentOS 6.x版 我想将curl,grep的输出用于两个完全独立的字符串,并将它们各自的值分配为变量。什么是最有效的方法(不将输出写入磁盘)? 通常,我会考虑使用类似以下内容的脚本: #!/usr/bin/env bash foo1=$(curl https://domain.com/file.xml | grep string1) foo2=$(curl https://domain.com/file.xml | grep string2) 但这最终要花两遍,而且效率极低。有没有更好的办法?希望解决方案涉及更少的通行证吗?

2
在awk中使用shell变量
这是我的脚本(查找包含指定模式的文件): find . -type f \ -exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \; 我想将我的脚本与参数§一起使用: MyScript.sh pattern 我的问题是我无法将$1变量放入awk。 当我尝试调试脚本时 bash -x MyScript.sh pattern 这是输出: + find . -type f -exec awk -v vawk=pattern '// {c++} c>0 …
8 bash  awk  variable 

2
如何从Shell变量获取路径的文件名部分
Shell变量包含路径。一个人如何获得其文件名部分? 在bash(1)中,我进行了实验,发现可以使用."${i/*\///}"where i是环境变量的名称来进行操作。这种方法不仅丑陋,而且在路径不包含任何/字符的情况下也是错误的。 我将演示一个需要这种功能的实际案例。假设我们要为源目录中的每个PDF文件建立到当前目录的符号链接。 $ for i in /source/path/*.pdf; do\ ln -s "$i" ."${i/*\///}"; \ done
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.