私は2つのスクリプトを書いた。 1つは、いくつかの説明を持つ他のスクリプトの簡単なコードが含まれています。
ユーザー:oracleこれら2つのファイルはoracleです。両方のファイルに実行権限があります。chmod +x fpc.sh && chmod +x bpc.sh
有効なスクリプト: fpc.sh
#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
TARGHET="\/app\/oracle\/admin\/DB\/$1"
chmod -R 755 $PATH
find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print
動作しないスクリプト:bpc.sh
#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
#
#TARGHET="\/app\/oracle\/admin\/DB\/$1"
#
#
#
#
#
#
#
#
#
#
#
#
#
#
chmod -R 755 $PATH
find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print
bpc.shは次のようになります:
chmod コマンドが見つかりません。 find コマンドが見つかりません。
それはどのように可能ですか?
助けてくれてありがとう、
答え1
これがCAPS
Bashで変数名を使用することです本当に悪い考えです。。
snake_case
またはを使用すると、CamelCase
環境変数は変更されませんPATH
。
したがって:
path=/app/oracle/admin/DB/$1
大丈夫です。
PATH=/app/oracle/admin/DB/$1
いいえ。
走る
( set -o posix ; set )
いくつかの変数があるかどうかを確認するために、誤って変数を上書きした可能性がありますCAPS
。追跡しようとするよりも一般的なルールと考えてください。いいえ使用CAPS
。