2017-01-20 7 views
0

タイトルに2つの数値変数が与えられた文字列を生成するbashスクリプトが必要です。その文字列は、ファイル名を生成するために使用されますが、私は名前の生成コードをテストするときには、

スクリプトは何も得ていない。ここ

# !usr/bin 
set nombre 
declare -a i 
declare -a j 

set $i 1 
set $j 2 

set nombre "$i\_$j.txt" 

echo $i 
echo $j 

を次のコードは、それが生成するものです。

[email protected]:~$ ./test4 

あなたはそれが

1 
2 

感謝を得なければならない一方で、それは何も得ていない見ることができるように事前に

+0

を考える! - あなたは#/ binに/ bash'または '#'場合がありますは/ usr/binに/あなたのシバンとしてenv bashを使うか、(もし後者のためにタグ付けされているにもかかわらず)bashの代わりにPOSIX shを書こうと思ったら '#!/ bin/sh'。 '#!/ usr/bin'は有効なシバンではなく、'#!usr/bin'でもありません。そしてそれらのどちらかで始まるスクリプトは、シェル以外で起動したときに正しく動作しません。 –

答えて

3

setは、通常の変数に値を割り当てるために使用されません。位置パラメータの値の設定やシェルオプションの変更に使用されます。あなたは定期的な割り当てが必要です。

i=1 
j=2 
nombre="${i}_$j.txt" 

echo "$i" 
echo "$j" 
echo "$nombre" 

割り当ての前に変数を宣言する必要はありません。必要に応じて代入によって変数が作成されます。 declareコマンドは、属性をという名前で設定します(-aなど)。これは、変数を配列変数としてマークします。ではなく、が必要です)。 !set作業を行う方法の例として、


、余談として

echo "First positional parameter: $1" 
echo "Second positional parameter: $2" 
set foo bar # $1=foo, $2=bar 
echo "First positional parameter: $1" 
echo "Second positional parameter: $2" 
+0

ご協力いただきありがとうございます。 – icecold

0

このコードは必要に応じて機能しますか?

#!/bin/bash 
i=1 
j=2 

echo $i 
echo $j 

nombre=$i"_"$j.txt 

echo $nombre