如何在创建另一个变量的命令中使用变量

时间:2017-02-20 23:10:58

标签: linux bash variables

我从read命令创建了我的基本变量(我手动完成并使用脚本):

read NAME

然后,我想使用NAME变量来搜索文件并创建另一个变量:

STUDENT=$(grep $NAME <students.dat | awk -F: '/$NAME/ {print $1}')

如果我使用student.dat文件(而不是$ NAME)中的实际名称手动运行该命令,它将执行并显示我想要的内容。但是,当我运行此命令(手动或使用$NAME的脚本)时,它返回空白,我不知道为什么。

2 个答案:

答案 0 :(得分:2)

@ user1615415:尝试:

cat script.ksh
echo "Enter name.."
read NAME
STUDENT=$(awk -vname="$NAME" -F: '($0 ~ name){print $3}' student.dat)

答案 1 :(得分:1)

Shell变量不是用单引号插值的,只是双引号。

STUDENT=$(grep $NAME <students.dat | awk -F: "/$NAME/ {print \$1}")
需要转义

$1以确保它不会被shell扩展,而是通过awk扩展。