无法在Bash

时间:2018-02-06 18:42:15

标签: linux bash variables command opensuse

我是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'

我很确定我错过了一些明显的东西,或者做了一些不允许的事情,但是我太新了。任何人都可以指出并更正我的脚本中的错误吗?

1 个答案:

答案 0 :(得分:0)

感谢Charles Duffy,不仅仅是关于这个脚本的反馈,还有bash脚本和Stack Overflow。

我能够按照自己的意愿修复脚本。我从file_info行中删除了^和:这就是停止grep命令找到我想要的行。我还重命名了$ UID和$ GID来使用小写字母,并删除了&#34;&gt;中的空格。和2&#34;

再次感谢您的协助。