[解決済み】シェルスクリプト - 変数から最初と最後の引用符 (") を削除します。
2022-03-26 01:37:55
質問
以下は、より大きなスクリプトの中のシェルスクリプトのスニペットである。これは、変数が保持する文字列から引用符を削除するものです。sedを使ってやっているのですが、効率的でしょうか?もしそうでないなら、効率の良い方法は何でしょうか?
#!/bin/sh
opt="\"html\\test\\\""
temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'`
echo $temp
解決方法は?
よりシンプルで効率的な方法があります。ネイティブシェルのプレフィックス/サフィックス削除機能を使用します。
temp="${opt%\"}"
temp="${temp#\"}"
echo "$temp"
${opt%\"}
はサフィックスを削除します。
"
(シェルの解釈を防ぐためにバックスラッシュでエスケープ)。
${temp#\"}
は接頭辞
"
(シェルの解釈を防ぐためにバックスラッシュでエスケープ)。
もう一つの利点は、周囲の引用符がある場合にのみ、周囲の引用符を削除することである。
ところで、あなたのソリューションは、最初と最後の文字が何であれ、常に削除されます(もちろん、あなたは自分のデータを知っていると思いますが、何を削除しているかは常に確認したほうがよいでしょう)。
sedを使用する。
echo "$opt" | sed -e 's/^"//' -e 's/"$//'
(jfgagne氏の指摘による改良版で、echoを削除したもの)
sed -e 's/^"//' -e 's/"$//' <<<"$opt"
そのため、先頭の
"
は何もなく、末尾の
"
にも何もない。同じ呼び出しの中で(パイプでつないで別のsedを起動する必要はない。を使って
-e
を使えば、複数のテキスト処理を行うことができます)。
関連
-
[解決済み] Haskellで文字列を分割する方法は?
-
[解決済み] OCaml - intをstringに変換する方法は?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] シェルスクリプトからエコーを使わずにパスワードを取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの文字列を連結して、同じ構造体のキーに格納するにはどうすればよいですか?
-
[解決済み] 一見、空のファイルや文字列がmd5sumを生成するのはなぜですか?
-
[解決済み] 動的構造体参照の引数は、有効なフィールド名として評価する必要があります。
-
[解決済み] Luaで文字列の中にマッチするテキストがあるかどうかを確認するには?
-
[解決済み] strconv.Atoi()で文字列を指定するとエラーが発生する。
-
[解決済み】Goで一定の長さのランダムな文字列を生成するには?
-
[解決済み】シェルスクリプト - 変数から最初と最後の引用符 (") を削除します。
-
[解決済み】Scala:文字列のイテラブルを結合する
-
[解決済み】Objective-CのisEqualToStringのSwiftに相当するものは何ですか?
-
[解決済み】ユニコード1文字には何バイトかかりますか?