shell脚本参数中有空格

现在想正常传递字符串中的空格,求解。
2024-11-18 20:46:11
推荐回答(5个)
回答1:

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

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

主脚本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

回答2:

用双引号就可以了,这样就是一个整体
例如:
test.sh "hello world"

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

回答3:

将包含空格的字符串用双引号引起来,这样就可以传递了。

回答4:

# cat 1
#!/bin/bash
echo $1
# sh 1 "12 23 4 "
12 23 4

回答5:

字符串加引号,或者空白前面加转义符。