2016-07-28 55 views
0

所以,我试图获得一个脚本,我正在使用不同的参数在不同的目录中运行另一个脚本,如文本文件中定义的。 这里是我的代码部分:sed - 单独的引号和参数

for bline in $(cat "$file"); do 
    lindir=$() 
    linarg=$() 
    echo "dir: ${lindir}" 
    echo "arg: ${linarg}" 
done 

比方说,我在文件中的一行,上面写着这样的:

"./puppies" -c=1 -u=0 -b=1 

我怎样才能获得的./puppieslindir输出和-c=1 -u=0 -b=1linarg输出?

回答

1

也就是说

while read -r bline; do 
    lindir="$(cut -d ' ' -f 1 <<<"$bline")" 
    linarg="$(cut -d ' ' -f 2- <<<"$bline")" 

    printf "dir: %s\n" "$lindir" 
    printf "arg: %s\n" "$linarg" 
done <"$file" 

如果你在一个外壳,不理解 “这里串” 是:

lindir="$(printf "%s" "$bline" | cut -d ' ' -f 1 )" 
linarg="$(printf "%s" "$bline" | cut -d ' ' -f 2-)"