awkでシェルコマンドを実行する方法

awkでシェルコマンドを実行する方法

次のように、ディレクトリをAパスからBパスに変更しようとしています。

pwd|awk '{if($1=="/") cd /tmp/}'
awk: syntax error near line 1
awk: illegal statement near line 1

提案してください

ベストアンサー1

system()inを使用してすべてのコマンドを実行できますが、サブシェルawkでコマンドを実行するため、ディレクトリを変更するために使用することはできません。したがって、サブシェルのディレクトリを変更すると、サブシェルはすぐにシャットダウンされます。コマンドは次のとおりです。

pwd|awk '$0 == "/"{system("cd /tmp")}'

しかし、私が言ったように、これはうまくいきません。コマンドの前に以下を追加すると、期待echoどおりに実際に実行されていることがわかります。

$ cd /
$ pwd|awk '$0 == "/"{system("echo cd /tmp")}'
cd /tmp
$ cd /home
$ pwd|awk '$0 == "/"{system("echo cd /tmp")}'

私は単に使用してif宣言する方が良いと思います。

if [ "${PWD}" = '/' ];then 
  cd /tmp
fi

おすすめ記事