我是 shell 脚本的新手。我想逐行读取包含参数的文件,如果参数中包含任何空格,我想用引号将其替换。
例如,如果文件 (test.dat) 包含,
-DtestArgument1=/path/to a/text file
-DtestArgument2=/path/to a/text file
解析上述文件后,shell 脚本应准备以下字符串
-DtestArgument1="/path/to a/text file" -DtestArgument2="/path/to a/text file"
这是我的shell脚本,
while read ARGUMENT; do
ARGUMENT=`echo ${ARGUMENT} | tr "\n" " "`
if [[ "${ARGUMENT}" =~ " " ]]; then
ARGUMENT=`echo $ARGUMENT | sed 's/\^(-D.*\)=(.*)/\1=\"\2\"/g'`
NEW_ARGUMENT="${NEW_ARGUMENT} ${ARGUMENT}"
else
echo "doesn't contains spaces"
NEW_ARGUMENT="${NEW_ARGUMENT} ${ARGUMENT}"
fi
done < test.dat
但它抛出以下错误:
sed: -e expression #1, char 28: Unmatched ) or \)
代码应该与所有 shell 兼容。请帮帮我。提前致谢。