请在下面找到简化的 bash 脚本 parseArg.sh:-
#!/usr/bin/env bash
function parse(){
local propsFile=$1
echo "search file is : >$propsFile<"
while IFS='=' read -r packageKey packageValue;
do
echo "package value is >$packageValue<"
packageProcessor $packageValue
echo "---------------------------------------------------------"
done < "$propsFile"
}
function packageProcessor(){
echo "Total args : $#"
echo "All args value : >$@<"
for arg in "$@"
do
echo "$arg"
done
}
$@
以下是同一目录中的配置文件 repos.conf :-
cm5-centos6.6="https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/ cm5-centos6.6 cm5/centos6.6 cm5/centos6.6 cm5-centos_6_6 "Cdh 5 for CentOS 6.6""
当我在同一目录中执行以下命令时:-
sh parseArg.sh 解析 repos.conf
我期待 6 个参数,但它总共提供了 10 个参数。以下是实际输出:-
search file is : >repos.conf<
package value is >"https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/ cm5-centos6.6 cm5/centos6.6 cm5/centos6.6 cm5-centos_6_6 "Cdh 5 for CentOS 6.6""<
Total args : 10
All args value : >"https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/ cm5-centos6.6 cm5/centos6.6 cm5/centos6.6 cm5-centos_6_6 "Cdh 5 for CentOS 6.6""<
"https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/
cm5-centos6.6
cm5/centos6.6
cm5/centos6.6
cm5-centos_6_6
"Cdh
5
for
CentOS
6.6""
---------------------------------------------------------