【问题标题】:Is there a way to do this in bash? echo $$((2-1))有没有办法在 bash 中做到这一点?回声 $$((2-1))
【发布时间】:2014-02-27 23:24:18
【问题描述】:

我在 $1 到 $# 中有几个字符串。我想执行一个简单的算术表达式并根据表达式的 # 回显 $ 的值。

例如。设置文件1 文件2 文件3 文件4

我想回显 $2 (file2),但使用算术表达式“echo $$((3-1))”,我认为它会解析为 $2,但 bash 只会抛出错误。

【问题讨论】:

  • 是的,这些句子有点神秘。你能解释清楚一点吗?
  • 您能否提供示例输入和输出,以便我们准确了解您的意思?
  • 也许先解释一下“$ 的值”和“表达式的#”是什么意思。

标签: bash shell


【解决方案1】:

使用变量间接:

set -- foo bar baz
var=$((1+1))
echo "${!var}"   

这将打印$2 的值,即“bar”。

【讨论】:

  • +1 用于识别问题的要求。字里行间令人印象深刻。
【解决方案2】:

使用子字符串扩展运算符:

$ set -- file1 file2 file3 file4
$ echo ${@:$((3-1)):1}
file2

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2011-05-05
    • 1970-01-01
    • 2019-01-18
    • 2011-06-09
    相关资源
    最近更新 更多