2017-12-21 3 views
-3

を埋めるようなエコーでReadコマンドを使用しますどのようscript.Egを書いていたブランク

echo "my name is 'read' and am from 'read' city" > outfile.txt 

をそれはそれはすなわちmy name is、最初の文を印刷していないときに実行されます。むしろ、それは使用2つのリードコマンドのための2つの入力を入力する最初の求めています、「私の名前はのSudhirあるとヴィザグ市から来ました」

私はスクリプトを第一に実行したいように、その完全な文を形成する「私の名前はあります read(ask for input)、am from read(ask for another input) city "と入力した後、onefileでoutfile.txtにリダイレクトする必要があります。

これを処理する方法は?一文で達成するのは実現可能ですか?

私は480の質問に同じロジックを使用したいので、同じファイルに存在する以前の質問を参考にして質問を追加できます。

+0

no man関数私は上記の例と同じ作業を試みましたが、使用された読み取りコマンドの値を第1に昇格させて、フルラインを出力します。ここでエンドユーザーは、何も入力していないことを知るようになります。ここでは、空白の形式を記入するように求めません。すべての質問について私は別々のエコーコマンドを作成することはできません第一の値を入力することを求めて第二の値を入力してください私は万能のソリューションを480の質問すべてに適用したい、 –

+0

1つの質問として3つの読み取りコマンドが必要な場合があります。あなたが関数を持つ解を持っている場合、例を共有してください –

答えて

0

readは改行文字を入力から端末に書き込むので、これを行うにはかなりの方法はありませんが、2回のパスでこれを行うことができます。

  1. あなたはスクリプト

    #!/bin/bash 
    
    echo -n 'my name is '; read -r name 
    echo -n ' and I am from '; read -r city 
    echo ' city' 
    
    printf "my name is %s and I am from %s city\n" \ 
        "$name" "$city" > output.txt 
    

    に次のように置くことができ、ユーザに、それは次のようになり

ファイルに結果を書き込み、ユーザからの入力を取得します。この

my name is sudhir 
and I am from vizag 
city 

しかし、それはあなたがプレースホルダ文字列を取得し、それらのそれぞれの入力をユーザーに要求する関数を記述することができ、ファイルに次のように

my name is sudhir and I am from vizag city 
0

次のようになります。

#!/bin/bash 

fill() { 
    arg="$*" 
    result="" 
    while [[ "$arg" =~ ([^_]*)(_+)(.*) ]] 
    do 
    read -rp "${BASH_REMATCH[1]# }${BASH_REMATCH[2]}: " input 
    result+="${BASH_REMATCH[1]}${input}" 
    arg="${BASH_REMATCH[3]}" 
    done 
    result+="$arg" 
    printf '%s\n' "$result" 
} 

exec > outputfile 
fill "My name is ____ and I am from ___." 
fill "My new years resolution is ____." 

例:

$ ./myscript 
My name is ____: Sudhir 
and I am from ___: Vizag 
My new years resolution is ____: learning Bash instead of asking SO to write my scripts 

$ cat outputfile 
My name is Sudhir and I am from Vizag. 
My new years resolution is learning Bash instead of asking SO to write my scripts. 
関連する問題