无法将命令输出分配给 bash 脚本内的变量

无法将命令输出分配给 bash 脚本内的变量

我已经在个人 bash 脚本中与某些东西作斗争有一段时间了,并且使用我在网上找到的建议并没有太多运气。我意识到这个问题看起来与其他许多问题几乎相同,但即使浏览了所有这些问题,我仍然没有任何快乐。

我认为最好的方法是列出我目前拥有的东西并从那里开始工作。

所以,我的脚本的相关部分是:

#!/bin/bash

SOURCE_FILE="$1"

cat "$SOURCE_FILE" | while read FOLDER
do

  ...

  FOLDER_RULE=$(echo ${FOLDER} | grep -oP '\[.*\]')
  FOLDER_NAME=$(echo ${FOLDER} | grep -oP '.+(?=\[.*\]')

  # these output absolutely nothing:
  echo FOLDER_RULE is "$FOLDER_RULE"
  echo FOLDER_NAME is "$FOLDER_NAME"

  ...
done

$SOURCE_FILE引用指向一个简单的文本文件,其中包含我在运行时传递给脚本的字符串列表。该文件的一些虚拟数据是:

Folder One [ALL]
Folder Two [LATEST]
Folder Three [FIRST]
Folder Four

$FOLDER我可以毫无问题地回显脚本中的内容,并且$(echo ... | grep ...)当我直接在终端中运行它们时,这两行工作完美,但在我的 bash 文件中我什么也得不到。

我尝试grep以不同的方式构造命令,将变量引用为${...}"$...",甚至简单地echo获取我试图捕获其输出的命令的输出,但我仍然一无所获。

很确定我错过了一些简单的事情,但我所做的搜索都没有帮助我解决这个问题。请有人帮助我理解我在这里做错了什么?

答案1

所以,毕竟,问题出在我的正则表达式上。刮掉那些线末尾的contains[something]按预期为变量赋值,而末尾没有该特定字符串的行将两个变量留空。至少我可以修复正则表达式方面。

我对这个愚蠢的问题表示歉意,并非常感谢评论者试图提供帮助。我非常感谢您的宝贵时间。 :)

相关内容