我是 bash 脚本的新手,我正在编写一个脚本,用户可以在其中输入用户名并从/etc/passwd 中获取相关信息的列表。不幸的是,我似乎无法通过命令填充变量。我收到的错误消息表明未输入 if 语句,但我不确定原因。
脚本目前看起来像这样:
#!/bin/bash
#readifs
FILE=/etc/passwd
read -p "Enter a username > " user_name
file_info=$(grep "^$user_name:" $FILE)
if [ -n "$file_info" ]; then
IFS=":" read user pw uid gid name home shell <<< "$file_info"
echo "User = '$user'"
echo "UID = '$UID'"
echo "GID = '$GID'"
echo "Full Name = '$name'"
echo "Shell = '$shell'"
else
echo "No such user '$user_name'" > &2
exit 1
fi
当我运行它时,使用有效的用户名,我得到以下两行:
readifs.sh: line 20: syntax error near unexpected token `&'
readifs.sh: line 20: ` echo "No such user '$user_name'" > &2'
我很确定我遗漏了一些明显的东西,或者做了一些 bash 不允许但我太新无法理解的事情。谁能指出并更正我脚本中的错误?
最佳答案
感谢 Charles Duffy 不仅对这个脚本,而且对 bash 脚本和 Stack Overflow 的所有重要反馈。
我能够根据需要修复脚本。我从 file_info 行中删除了 ^ 和 : ,这阻止了 grep 命令找到我想要的行。我还将$UID和$GID重命名为使用小写字母,并删除了“>&2”中的空格。
再次感谢您的协助。
关于linux - 无法从 Bash 中的命令填充变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48649802/