1. ホーム
  2. Qt

Linuxシェルプログラミングにおける不正な置換の解決法

2022-02-08 05:12:30
今日、シェルプログラミングの練習をしていて、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


Webで検索したところ、コンパイラが違うようで、1行目に指定する必要があるようです #! /bin/bash, それを試してみたがうまくいかなかった。しかし、コードを再確認したところ、変数の参照は${}ではなく$()であることが判明したので、コードのその行を次のように変更すればいいのだ。

for i in $(awk -F ":" '{print $1}' /etc/passwd | grep stu)

これは実は以前からわかっていたのですが、たまたまコードを書き間違えただけなので、またこんな低レベルなミスをしたときのために、今掲載しておきます。