在 shell 脚本中使用带单引号的 awk 将输出错误

在 shell 脚本中使用带单引号的 awk 将输出错误

我们使用的是 Debian 11。我想使用 grep 和 awk 从单个文件的内容中检索信息,如下所示:

文件:/home/user/directory/otherdirectory/data.txt

文件内容:

$db['data_config']['hostname'] = 'localhost';
$db['data_config']['username'] = 'userbitch';
$db['data_config']['password'] = 'HD3hdkskdks343kdksk43';
$db['data_config']['database'] = 'userbitch_database';

当我直接使用 shell 时,此命令给出了准确的结果:用户婊子

$ CONF="/home/user/directory/otherdirectory/data.txt"
$ grep 'data_config' $CONF | grep 'username' | awk -F\' '{ print $6 }'

但是当我在 shell 脚本(exec.sh)中应用此命令时,它返回错误:

./exec.sh: line n#: grep: command not found
./exec.sh: line n#: grep: command not found
./exec.sh: line n#: awk: command not found

我尝试了一些调试组合,例如 /$6 怀疑谋杀是 awk 变量的美元符号。如何在不使用 awk 的情况下获取封装在单引号中的“data_config”字符串的结果?是否存在不会抛出错误的正则表达式或打印变量的其他组合?

非常感谢您的关注。

相关内容