ホーム >
シェルスクリプトTips
- 標準入力から文字を入力する
- 文字列の大文字を小文字に変換する
- sudoの実行結果をリダイレクトするとpermission deniedが出る問題への対処方法
- ヒアドキュメント利用時に変数展開を抑制する
標準入力から文字を入力する
read -e -p "Prompt> " value
value=${value:-DEFAULT_VALUE}
echo $value
文字列の大文字を小文字に変換する
trコマンドを使用する場合
value=`echo $value | tr [A-Z] [a-z]`
awkコマンドを使用する場合
value=`echo $value | awk '{print tolower($0)}'`
Bash4.0系の場合
value=${value,,}
sudoの実行結果をリダイレクトするとpermission deniedが出る問題への対処方法
sudoで実行した結果をリダイレクトしても、書き込み先のディレクトリに書き込み権限がないと、permission deniedでエラーになってしまう。 この問題は、sudoでteeコマンドを実行することで回避できる。
ヒアドキュメントで作成した文書を書き込み権限がないディレクトリに保存する例
sudo tee /etc/sysconfig/memcached <<EOM PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="" EOM
ヒアドキュメント利用時に変数展開を抑制する
ヒアドキュメントの終了文字(EOF, EOMなど)をシングルクォートで囲むと、ヒアドキュメント内での変数展開やコマンドの実行が抑制される
ヒアドキュメント内にバッククォートで囲んだ文字を含めたい場合の例
sudo tee /etc/logrotate.d/nginx > /dev/null <<'EOM' /var/log/nginx/*log { weekly rotate 52 compress delaycompress missingok notifempty sharedscripts postrotate [ ! -f /var/run/nginx/nginx.pid ] || kill -USR1 `cat /var/run/nginx/nginx.pid` endscript } EOM