IFSを使用するときにコンマ区切りの出力を提供しない小さなスクリプトがありますが、他の多くの値を読み取るにはIFSが必要なので必須です。次のスクリプトの出力は次のとおりですが、odi_server1 odi_server2
コンマで区切る必要があります。
#Script Starts
#!/bin/sh
IFS=","
odi_cluster=odi_server1,odi_server2;
echo $odi_cluster;
#Script Ends
電流出力=odi_server1 odi_server2
予想出力 =odi_server1,odi_server2
注: -IFS=","
必須項目なので削除できません。
答え1
$odi_cluster
呼び出し時に引用符を使用しないため、シェルecho
は変数の値をにも表示される文字に分割します$IFS
(その後、結果の単語に対してファイル名のグロービングを実行します)。通常、$IFS
スペース、タブ、改行が含まれていますが、カンマにリセットしました。
変数の値odi_server1,odi_server2
と$IFS
コンマが含まれている場合、この分割によって2つの単語odi_server1
とが生成されますodi_server2
。これはecho
2つの別々の引数として提供され、echo
ユーティリティはそれを区切った空白として出力します。
出力に影響を与えないようにするには、シェルが引用符IFS
拡張機能を介して変数値を分割しないようにしてください。
echo "$odi_cluster"
または
printf '%s\n' "$odi_cluster"
関連:
以下を呼び出して、組み込みユーティリティIFS
に対してのみ変数を設定できます。read
read
IFS=, read ...
これにより、IFS
残りのスクリプトにデフォルト以外の値を設定することを防ぐことができます。
また関連することができます:
また、行の - 文字の合計は#
ファイルの最初の文字でなければなりません。同じ行に他の文がない限り、各文はaで終わる必要はありません。!
#!
;