1行に2つの変数を出力するシェルスクリプトを作成したいと思います。
私のスクリプトは次のとおりです
SRC = "192.168.1.1"
PORT = "22"
出力が次のように見えるようにしたいです。
192.168.1.1,22
どうすればいいですか?ありがとうございます。
答え1
複数の変数をエコーするには、echo
同じコマンドでその変数を参照します。また、正しいシェル割り当て構文はにあります=
。
#!/bin/sh
SRC="192.168.1.1"
PORT="22"
echo "$SRC,$PORT"
スクリプトを実行した結果は次のとおりです。
$ ./test.sh
192.168.1.1,22
答え2
通常、printf
次のような変数のデータを出力します。
#!/bin/sh
src=192.168.1.1
port=22
printf '%s,%s\n' "$src" "$port"
#!
上部に行方不明 - 行を追加しました。/bin/sh
既存のコードには、bash
または同じ特定の他のシェルが必要ないため、シェル(POSIXシェル)を選択しましたzsh
(Shebangなしでスクリプトを実行するシェルインタプリタとは何ですか?)。- 割り当ては文字の周りにスペースなしで行われます
=
(参照:シェルスクリプトの変数代入のスペース)。 - 既存の環境変数やシェル固有変数との予期しない競合を避けるために、小文字の変数名を使用してください(参照:シェルスクリプトの変数の命名規則はありますか?)。
printf
あなたのデータが外部ソースから到着するかどうかわからないので、予防措置として使用することを決定し、時には間違っていることが知られていecho
ます一部特定の文字列(参照なぜprintfがechoより優れているのですか?)。
引用については、次の興味深い点を見つけることもできます。
または、
#!/bin/sh
src=192.168.1.1
port=22
string="$src,$port"
printf '%s\n' "$string"
ここで唯一の違いは、最初の2つの変数のコンマ区切り値を使用して新しい変数を作成して出力することです。これは、後でスクリプトで文字列を使用する方法によっては、必要なものかもしれません。