我从read命令创建了我的基本变量(我手动完成并使用脚本):
read NAME
然后,我想使用NAME
变量来搜索文件并创建另一个变量:
STUDENT=$(grep $NAME <students.dat | awk -F: '/$NAME/ {print $1}')
如果我使用student.dat文件(而不是$ NAME)中的实际名称手动运行该命令,它将执行并显示我想要的内容。但是,当我运行此命令(手动或使用$NAME
的脚本)时,它返回空白,我不知道为什么。
答案 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扩展。