편집을 추가하고 사용자를 제거하기 위해 bash 스크립트를 작성하고 있습니다. 나는 그것을 작동시킬 수 없다. 누구든지 내가 잘못 가고있는 것을 볼 수 있습니까? .sh로 저장된 빈 문서를 만들어서 .sh 파일을 지정된 폴더에 추가했습니다. 옵션 1 또는 2를 입력하면 옵션 3에 ERROR가 표시되는 동안 옵션을 다시 입력하라는 메시지가 표시됩니다. 이 문제는 내가 파일을 생성 할 수 있다는 것입니다 내 업그레이드 된 코드는 여전히쉘 스크립트 사용자 관리 프로그램
메인 메뉴 코드
#!/bin/bash
trap ''2
title="////////////////////
10101010101010101010
///main user menu///
10101010101010101010
////////////////////
"
clear
echo "$title"
PS3='Select option: '
choice=("Create User" "Edit User" "Remove User" "Exit")
select cho in "${choice[@]}"
do
case $cho in
"Create User")
/home/hiphappy1/Documents/Courseworkfiles/Users.sh
;;
"Edit User")
/home/hiphappy1/Documents/Courseworkfiles/EditUser.sh
;;
"Remove User")
/home/hiphappy1/Documents/Courseworkfiles/RemoveUser.sh
;;
"Exit")
exit 0
;;
*) echo "ERROR try again"
;;
esac
done
추가 사용자 코드
#!/bin/bash
title="////////////////////////
101010101010101010101010
//Create Multiple Users//
101010101010101010101010
////////////////////////
"
clear
echo "$title"
password="ArsenalRule"
for USERNAME in $(cat /home/hiphappy1/Documents/Courseworkfiles/Userlist.txt)
do
useradd $USERNAME -m –s /bin/bash
echo -e "${password}\n${password}"! | passwd $USERNAME
done
read -r -p "Return to menu? [Y/N] " response
case $response in
[yY])
/home/hiphappy1/Documents/Courseworkfiles/Menulist.sh
;;
[nN])
exit 0
;;
*)
echo "ERROR try again"
;;
esac
exit
사용자 편집 코드
#!/bin/bash
title2="//////////////////
10101010101010101010
/////Edit User//////
10101010101010101010
////////////////////
"
clear
echo "$title2"
echo "Enter username:"
read username
echo""
id $username &> /dev/null
if [ $? -eq 0 ]; then
echo "$username exists... changing Password."
else
echo "$username does not exist! Password was not changed for $username"
exit 0
fi
passwd $username
read -r -p "Return to menu? [Y/N] " response
case $response in
[yY])
/home/hiphappy1/Documents/Courseworkfiles/Menulist.sh
;;
[nN])
exit 0
;;
*)
echo "ERROR try again"
;;
esac
exit 0
사용자 코드 제거
#!/bin/bash
title="///////////////////
10101010101010101010
////Remove User/////
10101010101010101010
////////////////////
"
clear
echo "$title"
echo -e "Users: "
cat /etc/passwd | grep “[1][0-9][0-9][0-9]” | cut -d “:” -f1
echo ""
echo -e "Select user to remove: "
read username
sudo deluser --remove-home $username
echo ""
echo " Removing"
sleep 2
echo ""
echo " $username REMOVED"
read -r -p "Return to menu? [Y/N] " response
case $response in
[yY])
/home/hiphappy1/Documents/CourseworkFiles/Menulist.sh
;;
[nN])
exit 0
;;
*)
echo "ERROR try again"
;;
esac
메인 메뉴 코드,'선택 = ("사용자 편집" "사용자 제거"를 ","사용자 만들기 " Exit ")'하지만 귀하의 사례 진술은"사용자 삭제 "를 찾고 있습니다. –
각 파일의 내용을 명확하게 표시 할 수 있습니까? 예 : 당신의 메뉴는'/ home/hiphappy1/Documents/Courseworkfiles/Users.sh'를 "Create User"로 실행하지만 사용자 코드를 생성하는 것은 스스로를 읽는 것처럼 보입니다 ...? 'for $ (cat /home/hiphappy1/Documents/Courseworkfiles/Users.sh)' 로컬 변수에 소문자 변수를 사용해야합니다. 특히 USERNAME 변수가 bash에 의해 환경 변수로 사용되기 때문에 –
큰 따옴표는 실제로는 큰 따옴표 (' "')가 아니라 큰 따옴표 ('" "')입니다. –