0

我想在我的 plist 中写一些东西,因为我使用脚本 shell。我正在同时训练 shell 脚本。我只是尝试获取 git log 命令的前三个输出行,并将输出放在 info.plist 的属性中

我的脚本:

output=$(git log | head -n 3)
file=$(echo $PWD)/info 

# write it to the Info.plist
defaults write "$file" gitLog $output

该命令的输出:$(git log | head -n 3)

commit glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk 
Author: Steve Jobs <steve.jobs@apple.com> 
Date: Fri Jun 28 14:33:38 2013 -0700

问题是当我$output输入defaults write. 它认为我将其他参数提交为“glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk”...

所以我需要做一些事情让他明白输出只是一个参数。

就像我想显示一个名称包含空格的文件夹列表时一样。我要做 :

ls "MY FOLDER"

我希望我能很好地解释我的问题

请帮忙

4

1 回答 1

1

尝试使用:

output=$(git log | head -n 3)
file=$(echo $PWD)/info 

defaults write "$file" gitLog -string "$output"

如果您想将 3 行文本存储为“一个字符串”。

或下一个:

OIFS=$IFS
IFS=$'\n'
declare -a output=( $(git log | head -n 3) )
IFS=$OIFS

file=$(echo $PWD)/info 
defaults write "$file" gitLog -array "${output[0]}" "'${output[1]}'" "${output[2]}"

如果您想将 3 行存储为“数组”。

于 2013-07-01T23:23:32.147 回答