繁体   English   中英

无法从Bash中的命令填充变量

[英]Can't populate variable from command in Bash

我是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”中的空格。

再次感谢您的协助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM