【发布时间】: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