我有一个文本文件,在Bash中有不同的用户名被读取到一个循环中。其中每一条都有自己的路线。我想在这个循环中对文本文件中的每个用户名执行操作。我认为这个问题可能与我正在调用另一个脚本有关,但我不确定。下面是文本文件的一个示例
bobsmith123
jimjenkins456
susanjones789然后,我使用LDAP搜索从AD获取一些信息,然后使用env变量将这些信息传递给另一个脚本。但是,文件的第一行被完全跳过,第二行工作正常,第三行似乎没有从文本文件中读取用户名,而是执行所有操作,导致调用脚本时出现错误,因为$CENTRIFY_USER是空的。任何帮助都是非常感谢的。这是我的剧本。
echo "Enter username for LDAP Search"
read USERNAME
export USERNAME
echo "Enter password"
read -s PASSWORD
export PASSWORD
echo "What user do you want to add to Centrify?"
while IFS='' read -r line || [[ -n "$line" ]]; do
read CENTRIFY_USER
export CENTRIFY_USER
OBJECTSID=`ldapsearch -H ldap://my.domain.com:389 -D "$USERNAME@MY.DOMAIN.COM" -w $PASSWORD -x -b "DC=my,DC=domain,DC=com" "(&(objectCategory=user)(sAMAccountName=$CENTRIFY_USER))" | grep objectSid | cut -d " " -f2`
SID=`/home/myhome/convert_objectSid_to_sid.sh $OBJECTSID`
export SID
echo "Adding user to Centrify..."
/home/myhome/add_users_to_centrify.sh
done < centrify_users_to_add.txt发布于 2018-06-15 13:24:00
在while循环中,执行两次读取。第一个是read -r line读取第一行,然后是read CENTRIFY_USER,它是第二行。您似乎没有在脚本中使用$line。
你似乎需要:
while IFS='' read -r CENTRIFY_USER; do
export CENTRIFY_USER
....
done < centrify_users_to_add.txthttps://stackoverflow.com/questions/50876405
复制相似问题