私はカラーラインを含む基本的なスクリプトを書いています。
#!/bin/bash
g="\e[32m"
_0="\e[0m"
printf "$g name $_0"
スクリプトはうまく実行されますが、shellcheck.net次のメッセージを受け取りましたDon't use variables in the printf format string
。
もう1つの問題は、スクリプトを#!/bin/sh
スクリプトに変換すると、次の出力が提供される正しく実行されないことです。
\e[32m name \e[0m
使ってみましたがecho -e
今回はサポートされていないとsh
出てきますね-e
。この問題を解決するために、共通のコード行をどのように書くことができますか?ありがとうございます。
答え1
これは利用可能で、bashまたはshで動作します。
#!/bin/bash
# \e not supported by POSIX; use \033 (octal) instead.
g=$(printf '\033[32m')
_0=$(printf '\033[0m')
printf '%s name %s foo' "$g" "$_0"