Bash 使用read'时出现语法错误;s输出为变量

Bash 使用read'时出现语法错误;s输出为变量,bash,Bash,我是bash新手,但我必须编写一个简单的脚本来归档内容: ARCHIVE_FOLDER=".archive/" TO_ARCHIVE="folders.txt" TO_IGNORE="ignore.txt" mkdir -p $ARCHIVE_FOLDER while read t_arc; do EXCLUDE_STRING=" " while read ig_l; do whi

我是bash新手,但我必须编写一个简单的脚本来归档内容:

ARCHIVE_FOLDER=".archive/"
TO_ARCHIVE="folders.txt"
TO_IGNORE="ignore.txt"

mkdir -p $ARCHIVE_FOLDER

while read t_arc; do
    EXCLUDE_STRING=" "
    while read ig_l; do
        while read found_exc; do
            EXCLUDE_STRING="${EXCLUDE_STRING} --exclude ${found_exc}"
        done < find $t_arc -name $ig_l
    done < TO_IGNORE
    tar -czf "${ARCHVE_FOLDER}/${t_arc}.tar.gz"
done < TO_ARCHIVE

我在这里做错了什么?

之后的符号
从该脚本中读取了3个
,您需要为其中2个使用不同的
fd
。另外,添加一个shebang并将脚本粘贴到。若要获得更多帮助,请从该脚本中读取3个
,您需要为其中2个使用不同的
fd
。还可以添加一个shebang并将脚本粘贴到,以获得更多有用的帮助,但是
不是“将内容写入文件”吗?不,它根本不是这样做的。尝试
cat<,但如果
则称为进程替换。语法
这些语法扩展并不总是完全合乎逻辑的,因为Bash(或通常最初的Ksh)在引入语法扩展时必须保持与经典的bourneshell的向后兼容性。因此,他们必须找到语法不具有其他含义的地方。我个人不太喜欢进程替换,尽管它们有时确实可以简化处理。这是可行的,但不是
“将内容写入文件?”不,这根本不是它的作用。尝试
cat<,但如果
则称为进程替换。语法
这些语法扩展并不总是完全合乎逻辑的,因为Bash(或通常最初的Ksh)在引入语法扩展时必须保持与经典的bourneshell的向后兼容性。因此,他们必须找到语法不具有其他含义的地方。我个人不太喜欢流程替换,尽管它们有时确实可以简化流程。
./archive.sh: line 12: syntax error near unexpected token `${t_arc}'
./archive.sh: line 12: `        done < find ${t_arc} -name ${ig_l}'
while read t_arc; do
    EXCLUDE_STRING=" "
    printf "%s\n" $t_arc # prints noting
done < <(find ...)
find ... |
while read -r ...