最初は6つのパラメータセットをスクリプトに渡しました。
Script.sh a b c d e f
スクリプトでパラメータを管理するコマンドの1つ。
comm=$(echo $1 |sed 's/~/ /g')
答え1
このsed
式は、s/~/ /g
各チルダ文字を空白文字に置き換えます。文字通り、「~
完全に(完全な入力行から)正規表現に一致するすべての項目を空白に置き換えます」を意味します。この場合、式は「faster」と書くことも、コマンドy/~/ /
全体sed
を「faster」に置き換えることもできますtr '~' ' '
。
これは以下でbash
より効率的に実行できます。
comm=${1//\~/ }
~
現在のユーザーホームディレクトリのパス名が拡張されないようにするには、ここでエスケープするか、引用符で囲む必要があります。
いずれにせよ、$1
それを使用するには二重引用符で囲む必要がありますecho
(シェルグローブをファイル名に拡張したくない限り)、理想的にはコマンドが作成されますprintf
(これにより、最初のダッシュが$1
ステートメントから何かとして解釈されるのを防ぐことができます)。いくつかのオプションの始めにecho
、場合によっては特定のバックスラッシュシーケンスを解釈するのを避けるため):
comm=$( printf '%s\n' "$1" | tr '~' ' ' )
関連: