2017-06-02 20 views
0

にawkコマンドの出力を保存することができません:私は次の操作を実行しようとしている変数

#!/bin/bash 

echo "Enter Receiver HostNames (comma separated hostname list of receivers):" 
read receiverIpList 

receiver1=`$receiverIpList|awk -F, '{print $1}'` 

echo $receiver1 

私はエラーの下に取得していますスクリプトを実行したとき。

./test1.sh 
Enter Receiver IP Addresses (comma separated IP list of receivers): 
linux1,linux2 
./test1.sh: line 6: linux1,linux2: command not found 

誰かがスクリプトの何が間違っているか教えてください。

+0

これはPowerShellとは関係ありません... – thepip3r

+1

[誰かが私の質問に答えるとどうすればいいですか?](http://stackoverflow.com/help/someone-answers) – Cyrus

答えて

1

あなたが使用しようとしている構文は次のようになります。

receiver1=`echo "$receiverIpList"|awk -F, '{print $1}'` 

が、あなたのアプローチが間違っています。ただ、直接bashの配列に入力を読み込み、それを使用する:あなたは、例えば、ちょうどbashの置換または類似を使用し、あなたはまだawkを使用してはならない、何らかの理由でそれを行うにはしたくなかった

$ cat tst.sh 
echo "Enter Receiver HostNames (comma separated hostname list of receivers):" 
IFS=, read -r -a receiverIpList 
for i in "${!receiverIpList[@]}"; do 
    printf '%s\t%s\n' "$i" "${receiverIpList[$i]}" 
done 

$ ./tst.sh 
Enter Receiver HostNames (comma separated hostname list of receivers): 
linux1,linux2 
0 linux1 
1 linux2 

場合でも、 :

$ foo='linux1,linux2'; bar="${foo%%,*}"; echo "$bar" 
linux1 

あなたは時々(receiver)が正しく受信機を綴り、時には間違っている、ところで、あなたの投稿のサンプルコードのようにスペルのように注意してください(reciever) - あなたがしようとしているとき、おそらくいくつかの点であなたをかむこと変数名を使用するが実際には0123を反転させるために別の名前を使用する。この問題を避けるために問題が修正されました。

+0

@JonathanLeffler - 訂正していただきありがとうございます。 –

関連する問題