-1

使っています Linux 2.6.x.x.x
SUSE Linux Enterprise Server 10 (i586)

私が知りたい質問は、パイプを介してコマンドに値を渡す方法です。
を含む他のすべてのオペレーティングシステムではDOS、次を使用できます。

echo <value> | <command>

しかし、Linuxでは、これは機能していないようです。

たとえば、ファイルから読み取った内容に基づいて設定するコマンドにを渡したいとDatabase NameOracleます。Environment VariablesDatabaseoratab

通常、コマンドは次のように実行されます。

 . oraenv   (to source environment variable settings)

次に、データベース名の入力を求められます。

しかし、:を実行する echo <some_db_name> | . oraenv と、プロンプトなしで動作し、このバージョンのLinuxを除くすべてのプラットフォームのスクリプトで役立ちます。

何か案は?

$ <> /home/oracle>echo $SHELL   
/bin/bash
4

3 に答える 3

3

Unix では、パイプはプログラムの出力を別のプログラムの入力に渡すために使用されます。

元:

$ echo "b c a e d" | tr " " "\n" | sort 
a
b
c
d
e

http://www.orafaq.com/wiki/Oraenvから

非インタラクティブ (スクリプト作成に便利):

$ export ORACLE_SID=orcl
$ export ORAENV_ASK=NO
$ . oraenv
于 2012-08-27T23:38:20.433 に答える
1

すでに次のようなことを試しましたか?:

echo "テーブル" | ./oraenv -

「-」は /dev/stdin を意味します

于 2012-08-28T02:58:20.710 に答える
0

したがって、私があなたを正しく理解していれば、 user を設定したいと思いますprofile。通常、環境変数はファイルEXPORTED内にありprofileます。しかし、独自のプロファイル ファイルを作成したい場合は、次のようにユーザーに値を求めることができます。

echo "Enter the DB Name:"    #This is optional but can be used in case if someone runs the script like $ . ./oraenv
read ORACLE_SID    # ORCL_SID is a variable
. oraenv

oraenvコマンドに上記のようなものを配置すると、echo <db name>|. ./oraenv機能するはずです。別の方法は、次のようなコマンドライン引数を使用することです

if [ $# -lt 1 ]             # $# is the number of arguments passed to the script
then
    echo "DB Name must be entered"
    exit 0
else
    ORACLE_SID =$1             # initialize $1 is the first arg which is the db name, consecutive args can be accessed by $2, $3 and so on.
    . oraenv
fi

上記を取得したら、以下のコマンドが機能するはずです。

$ . ./oraenv oradev

とはいえ、このoraenvユーティリティは Oracle ユーティリティであり、そのユーティリティを編集または変更することはできません。したがって、EXPORTING実行する前に変数を使用するのが最善の方法ですoraenv。上記のソリューションは、カスタムoraenvスクリプトに適用できます (作成する場合)。

于 2012-08-28T00:58:08.283 に答える