Questions tagged «variable»

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

3
在脚本中使用“ $ {a:-b}”进行变量分配
我一直在看别人写的一些脚本(特别是Red Hat),其中许多变量是使用以下表示法分配的, VARIABLE1="${VARIABLE1:-some_val}" 或者扩展了其他变量 VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 使用这种表示法而不是直接声明值(例如VARIABLE1=some_val)有什么意义? 这种表示法是否有好处,还是可以避免的错误? :-在此上下文中是否具有特定含义?


6
如何用bash加(减等)两个数字?
我可以阅读其中的数字和操作: echo "First number please" read num1 echo "Second number please" read num2 echo "Operation?" read op 但是后来我所有加法的尝试都失败了: case "$op" in "+") echo num1+num2;; "-") echo `num1-num2`;; esac 跑: First number please 1 Second mumber please 2 Operation? + 输出: num1+num2 ...要么... echo $num1+$num2;; # results in: 1+2 ...要么... echo …


5
将shell变量作为/ pattern /传递给awk
在我的一个shell函数中具有以下内容: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } ,因此当称为时_process $arg,$arg将作为传递$1,并用作搜索模式。它以这种方式工作,因为shell扩展$1代替了awk模式!也l可以在awk程序中使用,用声明-v l="$line"。一切都很好。 是否有可能以相同的方式将模式作为变量进行搜索? 以下操作无效, awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" } ' ,因为awk不会解释/search/为变量,而是按字面意义。
59 shell  awk  quoting  variable 

10
缩进后如何在多行中为变量分配字符串值?
问题: 我需要给一个变量赋一个相当长的值。 我脚本的所有行都必须在一定数量的列下。 因此,我尝试使用多个行来分配它。 没有缩进就很简单: VAR="This displays without \ any issues." echo "${VAR}" 结果: This displays without any issues. 但是缩进: VAR="This displays with \ extra spaces." echo "${VAR}" 结果: This displays with extra spaces. 如何在没有这些空格的情况下优雅地分配它?
54 variable 



3
测试字符串是否包含子字符串
我有代码 file="JetConst_reco_allconst_4j2t.png" if [[ $file == *_gen_* ]]; then echo "True" else echo "False" fi 我测试是否file包含“ gen”。输出为“ False”。真好! 问题是当我用变量替换“ gen”时testseq: file="JetConst_reco_allconst_4j2t.png" testseq="gen" if [[ $file == *_$testseq_* ]]; then echo "True" else echo "False" fi 现在输出为“ True”。怎么会这样?如何解决问题?


3
为什么打开文件比读取可变内容快?
在bash脚本中,我需要/proc/文件中的各种值。到目前为止,我有数十行代码直接像这样对文件进行grep: grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo 为了提高效率,我将文件内容保存在一个变量中并对其进行grep化: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' 与其多次打开文件,不如将其打开一次并grep变量内容,我认为这会更快-但实际上它更慢: bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done …


5
我们如何运行存储在变量中的命令?
$ ls -l /tmp/test/my\ dir/ total 0 我想知道为什么以下运行上述命令的方法失败还是成功? $ abc='ls -l "/tmp/test/my dir"' $ $abc ls: cannot access '"/tmp/test/my': No such file or directory ls: cannot access 'dir"': No such file or directory $ "$abc" bash: ls -l "/tmp/test/my dir": No such file or directory $ bash -c $abc 'my …
34 bash  shell  quoting  variable 


4
Shell函数中局部变量的范围
看完24.2。局部变量,我认为var使用关键字声明变量local意味着var仅在函数的花括号分隔的代码块中可以访问的值。 但是,在运行以下示例之后,我发现var也可以从该代码块调用的函数中进行访问,读取和写入-即,即使var被声明local为outerFunc,innerFunc也仍然可以读取和更改其值。 Run It Online #!/usr/bin/env bash function innerFunc() { var='new value' echo "innerFunc: [var:${var}]" } function outerFunc() { local var='initial value' echo "outerFunc: before innerFunc: [var:${var}]" innerFunc echo "outerFunc: after innerFunc: [var:${var}]" } echo "global: before outerFunc: [var:${var}]" outerFunc echo "global: after outerFunc: [var:${var}]" 输出: global: before outerFunc: [var:] …

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.