![複数の引数を単一の引数のように扱うBashスクリプト。複数の引数を複数の引数として扱う必要がある](https://rvso.com/image/1654348/%E8%A4%87%E6%95%B0%E3%81%AE%E5%BC%95%E6%95%B0%E3%82%92%E5%8D%98%E4%B8%80%E3%81%AE%E5%BC%95%E6%95%B0%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%89%B1%E3%81%86Bash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%80%82%E8%A4%87%E6%95%B0%E3%81%AE%E5%BC%95%E6%95%B0%E3%82%92%E8%A4%87%E6%95%B0%E3%81%AE%E5%BC%95%E6%95%B0%E3%81%A8%E3%81%97%E3%81%A6%E6%89%B1%E3%81%86%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B.png)
「sudo」のように、Web ページで ping、wget、cat などの操作を実行できるかどうかをテストできるコマンドを作成したいと思います。この bash スクリプトは、「www ./test.py」などの単一のコマンドでは正常に動作しますが、cat コマンドには他の情報が必要です。「www ping 192.168.XX」と入力すると、これが返されます。(.XX はローカル IP です)
sudo: ping 192.168.XX: コマンドが見つかりません
#!/bin/bash
if [ -z "$@" ]
then
echo "No arguments supplied"
sudo -u www-data bash
exit 0
else
echo "Hello world"
sudo -u www-data "$*"
exit 1
fi
#sudo -u www-data bash
PS. これはシステム上のどのユーザーにも使用できます。ここでは例として www-data を使用しました。