
내 스크립트를 확인하고 제안해 주세요. 입력으로 단어(최소 2자, 최대 5자)를 얻으려고 합니다.
사용자는 문자 위치를 제공하고 스크립트는 이를 소문자에서 대문자로 또는 대문자에서 소문자로 변경합니다. 지금까지 불완전한 스크립트는 다음과 같습니다.
입력하다:teSt 3
산출: test
#!/bin/bash
clear
while true
do
echo ******TEST*****
read -p 'Enter a word :' word
if [[ ${#word} -le 1 ]] || [[ ${#word} -ge 6 ]]; then
echo "Invalid input (Min of 2 and max of 5)!."
exit 1
fi
echo ${word^^*}
done
답변1
#!/bin/bash
read -p 'Enter a word : ' str id
if [[ ${#str} -le 1 ]] || [[ ${#str} -ge 6 ]]; then
echo "Invalid input (Min of 2 and max of 5)!." && exit 1
idt=$((id-1))
case ${str:idt:1} in
[[:lower:]])
r='\U';
;;
[[:upper:]])
r='\L';
;;
esac
echo $str | sed -r "s/./$r&/$id"
$ ./script.sh
Enter a word : test 1
Test
$ ./script.sh
Enter a word : Test 2
TEst
$ ./script.sh
Enter a word : teST 3
tesT
답변2
~를 사용하여 대문자와 소문자를 전환할 수 있습니다.
이것을 확인하세요:
#!/bin/bash
clear
while true
do
echo ******TEST*****
read -p 'Enter a word :' word pos
if [[ ${#word} -le 1 ]] || [[ ${#word} -ge 6 ]]; then
printf "\n\tInvalid input (Min of 2 and max of 5)!.\n\n"
fi
for x in `seq 0 ${#word}`; do
c=${word:$x:1}
if [ "$x" -eq "$(($pos-1))" ]; then
printf "%s" "${c~}"
else
printf "%s" "${c}"
fi
done
printf "\n\n"
done
답변3
이 스크립트는 지정된 문자의 대소문자만 전환합니다. 입력의 유효성을 검사하지 않습니다.
#!/bin/bash
while read -r -p "Enter a word :" word position; do
sed -r "s/([a-z])|([A-Z])/\U\1\L\2/${position}" <<< "$word"
done
시험:
$ ./up_and_low_case.sh
Enter a word :CAT 2
CaT
Enter a word :rabbit 4
rabBit