GNU/Linux >> Linux の 問題 >  >> Linux

シェルの$*の各要素に文字列を追加して追加しますか?

$*を使用する最も簡単なソリューションを探しています 入力として、指定された文字列のプレフィックスとサフィックスが付いた各要素に展開されます:

$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy

付加または付加のいずれかを実行できますが、両方を実行することはできません:

echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy

2つのソリューションを組み合わせることができません。ドキュメントには、parameter =*の場合の展開によって返される値はリストであると記載されていますが、そのように使用することはできません。結果の値の配列を個別の拡張機能として別のコマンドに渡したいので、単一の文字列を作成するだけでは機能しません。

承認された回答:

#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"

実行時:

$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy

Linux
  1. ログインシェルと非ログインシェルの違いは?

  2. $ {!foo}そしてZsh?

  3. Sedのスラッシュとバックスラッシュ?

  1. シェルスクリプトがメールコマンドでハングアップしますか?

  2. ファイルの各行の先頭に文字列を追加するにはどうすればよいですか?

  3. Bash シェル スクリプト - フラグをチェックしてその値を取得する

  1. シェルスクリプトを使用して /etc/hosts ファイルに行を追加します

  2. スクリプト内の bash シェル スクリプトおよび関数の変数スコープ

  3. Linux シェル wc -c カウント文字数 +1