0
その価値を失います。しかし 、私はそれが出力何もしないんコンソール..in ..は、シェルスクリプトを実行した後、変数は、私は、単純なシェルスクリプトを行っている
echo $state
を実行します。変数が価値を失うようです。これは正常な動作か、スクリプトに何かを付ける必要がありますか?
ありがとうございます!
その価値を失います。しかし 、私はそれが出力何もしないんコンソール..in ..は、シェルスクリプトを実行した後、変数は、私は、単純なシェルスクリプトを行っている
echo $state
を実行します。変数が価値を失うようです。これは正常な動作か、スクリプトに何かを付ける必要がありますか?
ありがとうございます!
./script.sh
またはsh script.sh
のようなスクリプトを実行していると仮定すると、これは予想される動作です。子プロセスは、親プロセスの環境を変更することはできません。シェルからシェルスクリプトを実行していても、このルールは変更されません。
何でき行うソースではなく、ローカル環境でこれらの変数を設定し、それを実行するスクリプトです:これは効果的にあなたの現在のシェルでスクリプトの行を実行します
. script.sh
ので、変数がそこに設定されます。要するに、
#!/bin/sh
file_name=$1
state=$(awk '/port protocol/ {print $4}' "$file_name")
echo "$state"
reason=$(grep "port protocol" "$file_name")
echo "$reason"
、引用あなたの変数cat
に無用の呼び出しを回避し、むしろawk
でパターンマッチングを使用します。私はあなたの注意を持っている間
、私はあなたのスクリプトに以下の変更を行うことをお勧めしたいですgrep
を配管するよりも。
ありがとうございます! –