val=`$LINE` のように定義すると、$LINE の bash 値は表示されません。

val=`$LINE` のように定義すると、$LINE の bash 値は表示されません。

何らかの理由で$ LINE値がval =に表示されない次のbashスクリプトがあります。各 $LINE はファイルから読み取った行を表示できますが、val で定義されている場合は表示されません。

  #/bin/bash
  while read LINE
  do
       echo "Processing:" $LINE
       val=`ldapsearch -h localhost -w test -z 0 -x -b 'dc=test,dc=org' -D "cn=admin,dc=testing,dc=com" id=$LINE | grep val`
       echo $LINE "," $val
  done < inputfile.txt

私はここで何が間違っているのか知っていますか?

答え1

あなたの質問によると、あなたのldapsearch

潜在的な修正 #1

まず、コマンドのバックティック部分がどのように拡張されるかを確認できるように、詳細な出力を有効にします。

set -x
val=`ldapsearch -h localhost -w test -z 0 -x -b 'dc=test,dc=org' -D \
     "cn=admin,dc=testing,dc=com" id=$LINE | grep val`
set +x
潜在的な修正 #2

$()また、バックティックの代わりに記号を使用するように変更します。

val=$(ldapsearch -h localhost -w test -z 0 -x -b 'dc=test,dc=org' -D \
     "cn=admin,dc=testing,dc=com" id=$LINE | grep val)
潜在的な修正 #3

$LINEまた、に渡されるときに内容を引用しますid=

val=$(ldapsearch -h localhost -w test -z 0 -x -b 'dc=test,dc=org' -D \
     "cn=admin,dc=testing,dc=com" id="$LINE" | grep val)
潜在的な修正 #4

最後に、STDOUTとSTDERRを解析できるようにパイプをからに|変更しました。|&ldapsearch

一般的なヒント

shebang 行にスイッチを追加すると、いつでも-xBash の完全な詳細出力をイネーブルにできます。

#!/bin/bash -x
...script...

答え2

これは引用の問題かもしれません。代わりにid=$LINE(通常)id="$LINE"echo $LINE

関連情報