2011-12-28 14 views
2

私は、Linuxからユーザからの入力を受け付けるスクリプトを書く必要があります。bashを使用して入力を分割するにはどうすればよいですか?

例えば、これは、入力行が考えられます。

name = Ruba 

私は入力から"Ruba"を取る必要があるので、どのように私は、入力を分割し、最後の部分を取ることができますか?

+0

? bash、sh、csh、zsh、qzs、ksh、hash? –

+0

Ruby、Python、Lua、CoffeeScript? –

+0

'Ruba'を入力すると、何を分割していますか?最後の部分は何ですか? – 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 

上記のコードは、名前と出力することを要求します。あなたの入力が "名前= Ruba"

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

ある場合

は、上記のコードは、 "名前= Ruba" のような行を読み、==とスペースの前のすべての文字を削除します。

1
#!/bin/bash 
read input 
echo $input |cut -d'=' -f2 | read name 
0
#!/bin/bash 
read input 
awk -F"= " '{print $2}' <<<"$input" 
関連する問題