【问题标题】:How can I get arguments containing spaces from file?如何从文件中获取包含空格的参数?
【发布时间】:2015-05-25 20:26:35
【问题描述】:

如果我跑:

s.sh A B="     " C

s.sh

#!/bin/bash

count() {
    echo $#
    echo "$1" "$2" "$3"
}

count "$@"

我得到以下输出:

3
A B=         C

这是预期的。 好!


但如果我跑:

s2.sh -f file.txt

s2.sh

#!/bin/bash

count() {
    echo $#
    echo "$1" "$2" "$3"
}    

while read line || [[ -n "$line" ]]
do
    echo -e "\nLine: $line"
    count $line
done < $2

文件.txt

A B="       " C

我没有得到类似的输出。它是:

Line: A B="       " C
4
A B=" "

实际:4个参数

预期:3个参数(与示例中提到的通过命令行提供的参数相同)

我还尝试在 file.txt 中使用以下几行:

A B='       ' C
A B=\"       \" C
A B=        C
A B=\ \ \ \ \ \ \  C

并使用count "$line",但我无法实现预期的行为。

如何从文件中读取这些参数?

【问题讨论】:

  • 如果要处理字符串中的引号,则需要使用eval

标签: bash argument-passing args


【解决方案1】:

要处理输入行中的引号和其他元字符,您需要使用eval

eval "count $line"

【讨论】:

    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2015-08-21
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多