如何处理$ @中的引用参数?

时间:2015-06-25 07:46:45

标签: bash

例如,test.sh

#!/bin/bash

for i in "${@}"; do
    echo "${i}"
done

如果您运行./test.sh one 'two' "three",您将获得

one
two
three

但我想得到的是:

one
'two'
"three"

我怎么能得到这个?

感谢。

2 个答案:

答案 0 :(得分:2)

Bash从字符串中删除引号。因此,如果您需要引号,则需要将它们放在其他引号内。

这样做的:

./test.sh one "'two'" '"three"'

应该给你想要的结果。

另一种可能性是逃避你的引号,以便bash知道它是字符串的一部分:

./test.sh one \'two\' \"three\"

会起作用,所以会:

./test.sh "one" "\'two\'" "\"three\""

否则,您始终可以通过执行以下操作在脚本中再次添加引号:

echo "\"${i}\""

例如。

答案 1 :(得分:2)

你需要调整你的输入。例如:

# ./test.sh one \'two\' \"three\"
one
'two'
"three"
#