我是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'
我很确定我错过了一些明显的东西,或者做了一些不允许的事情,但是我太新了。任何人都可以指出并更正我的脚本中的错误吗?
答案 0 :(得分:0)
感谢Charles Duffy,不仅仅是关于这个脚本的反馈,还有bash脚本和Stack Overflow。
我能够按照自己的意愿修复脚本。我从file_info行中删除了^和:这就是停止grep命令找到我想要的行。我还重命名了$ UID和$ GID来使用小写字母,并删除了&#34;&gt;中的空格。和2&#34;
再次感谢您的协助。