Bash 这个错误意味着什么?(SC2129:考虑使用{CMD1;CMD2;} & gt;.gt;文件,而不是个别重定向)。
我正在写一个脚本来为我的博客生成草稿。运行之后,我一直看到这个错误弹出。这意味着什么?有人能举个例子吗Bash 这个错误意味着什么?(SC2129:考虑使用{CMD1;CMD2;} & gt;.gt;文件,而不是个别重定向)。,bash,shell,shellcheck,Bash,Shell,Shellcheck,我正在写一个脚本来为我的博客生成草稿。运行之后,我一直看到这个错误弹出。这意味着什么?有人能举个例子吗 SC2129:考虑使用{CMD1;CMD2;} >文件而不是个别重定向。< /代码> 此外,我不确定需要做什么才能将$title的值传递到帖子YAML中的“title”字段 #!/bin/bash # Set some variables var site_path=~/Documents/Blog drafts_path=~/Documents/Blog/_drafts title
<代码> SC2129:考虑使用{CMD1;CMD2;} >文件而不是个别重定向。< /代码>
此外,我不确定需要做什么才能将$title
的值传递到帖子YAML中的“title”
字段
#!/bin/bash
# Set some variables
var site_path=~/Documents/Blog
drafts_path=~/Documents/Blog/_drafts
title="$title"
# Create the filename
title=$("$title" | "awk {print tolower($0)}")
filename="$title.markdown"
file_path="$drafts_path/$filename"
echo "File path: $file_path"
# Create the file, Add metadata fields
echo "---" > "$file_path"
{
echo "title: \"$title\""
} >> "$file_path"
echo "layout: post" >> "$file_path"
echo "tags: " >> "$file_path"
echo "---" >> "$file_path"
# Open the file in BBEdit
bbedit "$file_path"
exit 0
如果单击shellcheck提供的消息,您将到达 在这里,您可以找到以下内容: 问题代码:
echo foo >> file
date >> file
cat stuff >> file
{
echo foo
date
cat stuff
} >> file
正确的代码:
echo foo >> file
date >> file
cat stuff >> file
{
echo foo
date
cat stuff
} >> file
理由:
echo foo >> file
date >> file
cat stuff >> file
{
echo foo
date
cat stuff
} >> file
您可以在每行之后添加>>内容,而不是在每行之后添加>>内容
只需将相关命令分组并重定向组
例外情况
这主要是一个文体问题,可以随意忽略
因此,基本上替换:
echo "---" > "$file_path"
{
echo "title: \"$title\""
} >> "$file_path"
echo "layout: post" >> "$file_path"
echo "tags: " >> "$file_path"
echo "---" >> "$file_path"
与:
尽管我建议您使用:
cat>“$file_path”{echo'foo';echo'bar';echo'baz'}>>文件
而不是单独/重复的echo x>>文件
第一个版本多次打开和关闭文件。第二个只打开和关闭一次。这没什么关系,但还是要考虑的。