2011-12-28 4 views
2

사용자로부터 입력을받는 스크립트를 Linux에 작성해야합니다.어떻게 bash를 사용하여 입력을 분할 할 수 있습니까?

는 예를 들어, 입력 라인 수 : I는 입력에서 "Ruba"를 취할 필요가

name = Ruba 

, 그래서 내가 어떻게 입력을 나눌 수 있으며, 마지막 부분을?

+0

쉘? bash, sh, csh, zsh, qzs, ksh, hash? –

+0

루비, 파이썬, 루아, CoffeeScript? –

+0

'루바 '를 입력으로 사용한다면, 당신은 무엇을 나누고 있습니까? '마지막 부분'은 무엇입니까? – birryree

답변

3

"내부 필드 분리 자"인 IFS in bash을 사용할 수 있으며 bash에게 단어를 구분하는 방법을 알려줍니다. IFS을 공백 (또는 구분 기호)으로 설정하고 입력을 다시 배열로 가져 와서 입력 내용을 읽을 수 있습니다.

#!/usr/bin/env bash 

echo "Type in something: " 

# read in input, using spaces as your delimiter. 
# line will be an array 
IFS=' ' read -ra line 

# If your bash supports it, you can use negative indexing 
# to get the last item 
echo "last item is: ${line[-1]}" 

테스트 실행 :

$ ./inscript.sh 
Type in something: 
name = ruba 
last item is: ruba 
2

당신이 이름을 읽으려면 :

#!/bin/bash 
read -p "Name: " name 
echo $name 

위의 코드는 이름과 출력이 묻는 메시지를 표시합니다. 귀하의 의견은 "이름 = 루바"

#!/bin/bash 
read name 
name=$(echo $name | sed 's/.*=\ *//') 
echo $name 

경우

은 위의 코드는 "이름 = 루바"와 같은 라인을 읽고 == 공백 앞에 모든 문자를 제거합니다.

1
#!/bin/bash 
read input 
echo $input |cut -d'=' -f2 | read name 
0
#!/bin/bash 
read input 
awk -F"= " '{print $2}' <<<"$input" 
관련 문제