shell脚本参数中有空格

现在想正常传递字符串中的空格,求解。

这几天发现构建脚本太过庞大,于是就想把重复的单项构建独立成一个脚本。结果马上面临一个问题:参数带有空格!

在网上折腾了一番,也没有解决。于是自己尝试了一番,终于找到真正解决办法。这个办法的优点是,可以同时传递多个带空格的参数。注意下文中有黑体的部分:

主脚本test.sh

PROJECT_CLEAN=0

PROJECT_FILES="file1 file2"

./build-project.sh $PROJECT_CLEAN "$PROJECT_FILES"

辅脚本build-project.sh:

PARAM_CLEAN=$1

PARAM_FILES="$2"

for file_name in $PARAM_FILES

do

echo $file_name

done

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-08
用双引号就可以了,这样就是一个整体
例如:
test.sh "hello world"

脚本中取参数时也要用双引号: "$1"追问

我现在是shell里面写了一个函数,我给shell中的这个函数传参数,比如传 "export DB_NAME="他进去就直接给我分两半了,加了转义\也不行,

追答

在里面取参数时也要用双引号: "$1"
分成了哪两半啊?

追问

我还真没有试过"$1",我直接这样取的 $1,没有加双引号,分成了,export和DB_NAME=呀,

追答

嗯,需要加双引号,用 "$1"
对于字符串变量,任何时候加双引号都不会错,更加保险。

本回答被网友采纳
第2个回答  推荐于2017-06-27
将包含空格的字符串用双引号引起来,这样就可以传递了。本回答被网友采纳
第3个回答  2017-06-27
# cat 1
#!/bin/bash
echo $1
# sh 1 "12 23 4 "
12 23 4

第4个回答  2017-06-27
字符串加引号,或者空白前面加转义符。
相似回答