シェルスクリプトを使用してプロキシを動的に設定および設定解除する方法は?

シェルスクリプトを使用してプロキシを動的に設定および設定解除する方法は?
p=sudo npm config get proxy;
echo "$p";
if [ -z $p ] 
 then
  echo "delete";
  sudo npm config delete proxy http://xxx.xx.xxx.xxx:8085
 else 
 echo "set";
  sudo npm config set proxy http://xxx.xx.xxx.xxx:8085
fi

試しましたが結果は出ません

答え1

スクリプトには特に問題はありません。

  1. 変数をコマンドの出力に設定します(例:コマンドの置き換え$())コマンドをまとめる必要があります。同じ目的で、私はさまざまな方法で壊れている古いバックティックの存在を意図的に無視しています。

  2. 変数を使用するときに参照してください。

    たとえば、引用符を使用しないことは、実際に空の場合は間違いなくif [ -z $p ]構文エラーです。$p-z 必要議論。 if [ -z "$p" ]空の文字列もパラメータであるため、エラーは発生しません。

以下は最小限の修正バージョンです(追加のセミコロンも削除されます)。

p="$(sudo npm config get proxy)"
echo "$p"
if [ -z "$p" ] ; then
  echo "delete"
  sudo npm config delete proxy http://xxx.xx.xxx.xxx:8085
else 
  echo "set"
  sudo npm config set proxy http://xxx.xx.xxx.xxx:8085
fi

関連情報