【问题标题】:How to use a Linux variable as a command parameter如何使用 Linux 变量作为命令参数
【发布时间】:2014-05-07 18:20:28
【问题描述】:

我正在尝试使用 bash shell 变量作为命令参数,但不能

以下是有效的:

sed -n '2p' <file>   

给我文件的第 2 行

我想做什么:

sed -n '$variable p' <file>

当然,这是行不通的。我已经尝试了所有可能的语法组合,但没有成功。如何合并变量来代替常量?

【问题讨论】:

  • 使用双引号和大括号分隔变量名:sed -n "${variable}p"。单引号使所有正常的 shell 元字符再次变得普通,因此 $、反斜杠 \ 和反引号不会像往常一样被解释。使用大括号时,数字和p 之间的空格是可选的,但在省略时是必需的。

标签: linux shell variables command


【解决方案1】:

变量在双引号内展开,而不是在单引号内:

sed -n "$variable p" <file>

【讨论】:

    【解决方案2】:

    @Barmar 可以正确回答您的问题。

    我担心你会使用它作为一种技术来遍历文件的行。

    这将非常低效:

    for linenum in $(seq $(wc -l < filename)); do
        line=$(sed -n "$linenum p" filename)
        # do something with $line
    done
    

    遍历文件行的惯用方法是:

    while IFS= read -r line; do
        # do something with "$line"
    done < filename
    

    【讨论】:

      【解决方案3】:

      将变量放在字符串之外: sed -n $变量'p'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2012-10-25
        相关资源
        最近更新 更多