2016-04-05 10 views

答えて

1

./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を配管するよりも。

+0

ありがとうございます! –

関連する問題