私は、Linuxからユーザからの入力を受け付けるスクリプトを書く必要があります。bashを使用して入力を分割するにはどうすればよいですか?
例えば、これは、入力行が考えられます。
name = Ruba
私は入力から"Ruba"
を取る必要があるので、どのように私は、入力を分割し、最後の部分を取ることができますか?
私は、Linuxからユーザからの入力を受け付けるスクリプトを書く必要があります。bashを使用して入力を分割するにはどうすればよいですか?
例えば、これは、入力行が考えられます。
name = Ruba
私は入力から"Ruba"
を取る必要があるので、どのように私は、入力を分割し、最後の部分を取ることができますか?
「内部フィールドの区切り文字」である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
名前が読みたい場合:
#!/bin/bash
read -p "Name: " name
echo $name
上記のコードは、名前と出力することを要求します。あなたの入力が "名前= Ruba"
#!/bin/bash
read name
name=$(echo $name | sed 's/.*=\ *//')
echo $name
ある場合
は、上記のコードは、 "名前= Ruba" のような行を読み、=後=とスペースの前のすべての文字を削除します。
#!/bin/bash
read input
echo $input |cut -d'=' -f2 | read name
#!/bin/bash
read input
awk -F"= " '{print $2}' <<<"$input"
? bash、sh、csh、zsh、qzs、ksh、hash? –
Ruby、Python、Lua、CoffeeScript? –
'Ruba'を入力すると、何を分割していますか?最後の部分は何ですか? – birryree