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>>文件
第一个版本多次打开和关闭文件。第二个只打开和关闭一次。这没什么关系,但还是要考虑的。