Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UserAddBash标准出现语法错误_Bash - Fatal编程技术网

UserAddBash标准出现语法错误

UserAddBash标准出现语法错误,bash,Bash,(标准)1:语法错误 useradd:用户“cjh”已存在 (标准_in)1:语法错误 useradd:用户“txj”已存在 (标准_in)1:语法错误 useradd:用户“rbh”已存在 (标准_in)1:语法错误 useradd:用户“cjh”已存在 我遗漏的错误在哪里?我想将用户名从cjh1增加到cjh2…考虑以下几点: store=$(cat /etc/passwd | grep ^$outName | awk '{print 1}' | cut -b4- | sort -n)

(标准)1:语法错误
useradd:用户“cjh”已存在
(标准_in)1:语法错误
useradd:用户“txj”已存在
(标准_in)1:语法错误
useradd:用户“rbh”已存在
(标准_in)1:语法错误
useradd:用户“cjh”已存在


我遗漏的错误在哪里?我想将用户名从
cjh1
增加到
cjh2…
考虑以下几点:

store=$(cat /etc/passwd | grep ^$outName | awk '{print 1}' | cut -b4- | sort -n)
    #echo $store
    num=$(echo $store + 1 | bc ) 
#/usr/bin/env bash
maxNum=0
outName=cjh
而IFS=:read-r username\ux;做
如果[[$username=“$outName”[[:digit:][]*]];然后
后缀=${username#“$outName”}
如果((后缀>最大值));然后
maxNum=$((后缀))
fi
fi

好了,我的天,这里有很多错误。首先,运行
bash-xyourscript
以完整日志运行它,这将显示(例如)您是否有DOS换行符。其次,
'{print 1}'
不是
'{print$1}'
;您实际上是在打印
1
,而不是打印实际的用户名。第三,如果您的操作系统是Linux,那么有更好的方法来判断用户是否已经存在
getent passwd“$outName”
将直接查找
/etc/passwd
条目,如果不存在,则会以非零退出状态失败。woops修复了该问题,但仍然是一个错误。让我为yougetent获取bash-x,它会做与我的代码相同的事情,只是效率稍微高一点?
#!/usr/bin/env bash
maxNum=0
outName=cjh
while IFS=: read -r username _; do
  if [[ $username = "$outName"[[:digit:]]* ]]; then
    suffix=${username#"$outName"}
    if (( suffix > maxNum )); then
      maxNum=$(( suffix ))
    fi
  fi
done </etc/passwd
echo "New username is ${outName}$((maxNum + 1))"