2017-09-10 10 views
1

2つの文字列シェルスクリプトCONCATENATE私はtxtファイルに次のパターンを提供する必要があるシェルスクリプトをしました

test0000 [email protected] 
test0001 [email protected] 

というようになるまで停止条件(この場合は10 ...)

は現在、動作していないと私は次のように試してみました:

start=“test” 
email=“@gmail.com" 
start=0 
stop=10 


i=0 
while [[ $i -le 10 ]] 
do 
    printf "%s%10d\n" "$start” "$i" "\n" "$start” "$email" 

それを解決するためにどのように任意のアイデア? "@ gmail.com:" あなたが使用することができ、無効な数

+2

あなたの引用はすべて間違っています。 '' ''は '' 'と同じではありません。 – Mat

+0

元のコードには、フォーマット文字列内に2つのプレースホルダしかありません。 3つ以上の引数を指定すると、最初のプレースホルダからの置換よりも開始されます。つまり、引用符が固定されていると仮定すると、 '$ start'は'%s'に入り、 '$ i'は'%10d 'それはすべきですが、' \ n'は次の '%s'に入り、' $ start'は '%10d'に行きます。その値は数値ではないので、エラーが発生します。 (そして、最後の '$ email'引数を残しておけば、エラーが出ない場合はフォーマット文字列を3回目に評価しようとします)。 –

答えて

0

:私はエラーを得たループ構文については異なると

start='test' 
email='@gmail.com' 

for ((i=0; i<10; i++)); do 
    printf '%s%04d %s%04d%s\n' "$start" $i "$start" $i "$email" 
done 

test0000 [email protected] 
test0001 [email protected] 
test0002 [email protected] 
test0003 [email protected] 
test0004 [email protected] 
test0005 [email protected] 
test0006 [email protected] 
test0007 [email protected] 
test0008 [email protected] 
test0009 [email protected] 
+0

ありがとう! IFS中に「test0000」と「test0000 @ gmail.com」だけを読むことにしたければ、その作業、1つの質問、どうすればいいですか?私はそれをvariblesに置くことを意味します... –

+0

私は今、携帯電話上でスクリプトをテストすることができません。すべてのパディングとアラインメントを得るためにprintfのフォーマットを調べてください。 – anubhava

+0

この出力を変数に読み込むには 'while IFS = read -r str email;宣言する-p str email;完了<ファイル名> – anubhava

1

もう一つの例:

start="test" 
email="@gmail.com" 

for i in {0000..9};do 
    echo "${start}$i ${start}${i}${email}" 
done 

test0000 [email protected] 
test0001 [email protected] 
test0002 [email protected] 
test0003 [email protected] 
test0004 [email protected] 
test0005 [email protected] 
test0006 [email protected] 
test0007 [email protected] 
test0008 [email protected] 
test0009 [email protected] 

または、whileループ付き:

start="test" 
email="@gmail.com" 
count=0 

while [[ $count -lt 10 ]]; do 
    printf '%s%04d %s%04d%s\n' "$start" $count "$start" $count "$email" 
    let count++ 
done 
関連する問題