54237


**「nginx -t」が正しかった場合のみ、「systemctl restart
nginx.service」実行したいのですが、下記で合っていますか？**

[code]

    $ sudo nginx -t && systemctl restart nginx.service
    
[/code]

* * *

**下記は、上記と何が違うのですか？**  
・それぞれ長所短所があれば教えてください

[code]

    sudo sh -c 'nginx -t && systemctl restart nginx.service'
    
[/code]

・何れも、幾つでも連結可ですか？

[code]

    $ sudo コマンド && コマンド || コマンド || コマンド
    $ sudo sh -c 'コマンド && コマンド || コマンド || コマンド'
    
[/code]

* * *

**環境**  
・CentOS7  
・Nginx


CC BY-SA 4.0
2019-04-16T15:19:59.003
54215
2019-04-17T06:18:27.437
2019-04-16T15:41:20.070
3060
7886
question
centos bash nginx shellscript
設定ファイルの文法エラーをチェックしてから、Nginx再起動


試してみればすぐにわかることだとは思いますが、

`$ sudo nginx -t && systemctl restart nginx.service`

`nginx`は管理者権限で実行され、それが成功すると、`systemctl`が現在のユーザの権限で実行されます。これが期待通りかどうかはわかりません。`sudo`の引数は`&&`の直前までです。

`sudo sh -c 'nginx -t && systemctl restart nginx.service'`

`sh`が管理者権限で実行されるので、その中で実行される`nginx`も`systemctl`も管理者権限で実行されます。行末まですべてが`sudo`の引数です。


CC BY-SA 4.0
2019-04-17T04:00:01.283
54237
2019-04-17T06:18:27.437
2019-04-17T06:18:27.437
3475
3475
54215
answer