0

外部構成ファイルを使用してスクリプトをセットアップしようとしていますが、うまく動作しません:

変数を宣言する構成ファイルがあります。

#!/bin/bash
screenname=template

そして、このファイルをドットソーシングしている私のスクリプト。

#!/bin/bash
. config.sh
echo $screenname

screen -S $screenname -X stuff "Test\015"
screen -S template -X stuff "Test\015"

出力:

template
No screen session found.

>template< という名前の画面があり、ご覧のとおり、$screenname の値は >template< ですが、最初の screen コマンドは No screen session found... を返します。

誰かがこの愚かなことで私を助けてくれることを願っています..ありがとう

4

1 に答える 1

0

set -x「ドットソーシング」を実行するスクリプトの先頭にaを配置します (シバン行の下#!/bin/bash):

#!/bin/bash
set -x
. config.sh
echo $screenname
:
rest of script

これにより、実行する前に解釈されたとおりに各行が出力され、機能しない理由を見つけようとするのに役立ちます。以下を追加することもできます。

echo "[$screenname]"
echo "${#screenname]"

区切りバージョンと長さを取得します。

問題のいくつかの可能性:

  • 変数をエクスポートする必要があるかもしれません (ただし、この場合、それ自体が環境変数を解釈する必要があるscreennameため、そうは思いません)。bash
  • 変数内のいくつかの隠し文字。

繰り返しになりますが、当て推量に頼るのではなく、提案された手順を実行して問題を絞り込むか、特定する必要があることを強調します。

于 2013-04-15T07:51:13.997 に答える