linux shell编程时bad substitution的解决办法

今天在练习shell编程,之前在系统中增加了很多stu*的用户,现在想把这些用户名都找出来,于是用了下面的几行代码:
#find stu* users
for i in ${awk -F ":" '{print $1}' /etc/passwd | grep stu}
do
echo $i
done

运行的时候提示:

${awk -F ":" '{print $1}' /etc/passwd | grep stu}: bad substitution
网上找了半天说使用的编译器不同,需要在首行指定 #!/bin/bash,我试过了不行,后来还是仔细的检查了代码,原来变量引用是$(),而不是${},所以只需要把这行代码改为:

for i in $(awk -F ":" '{print $1}' /etc/passwd | grep stu)
这个其实以前是知道的,只是写代码的一不小心就写错了,现在贴出来以防再犯这样的低级错误。

你可能感兴趣的:(linux shell编程时bad substitution的解决办法)