結果を変数に割り当てたいcut
を使用した操作があります
var4=echo ztemp.xml |cut -f1 -d '.'
エラーが発生します:
ztemp.xmlはコマンドではありません
var4
の値は割り当てられません。私はそれに出力を割り当てようとしています:
echo ztemp.xml | cut -f1 -d '.'
どうやってやるの?
次のように割り当てを変更する必要があります。
_var4="$(echo ztemp.xml | cut -f1 -d '.')"
_
$(…)
構文は command susbtitution として知られています。
使用しているシェルに応じて、パラメーター拡張を使用できます。たとえばbash
の場合:
${parameter%Word}
${parameter%%Word}
Remove matching suffix pattern. The Word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
a trailing portion of the expanded value of parameter, then the
result of the expansion is the expanded value of parameter with
the shortest matching pattern (the ``%'' case) or the longest
matching pattern (the ``%%'' case) deleted. If parameter is @
or *, the pattern removal operation is applied to each posi‐
tional parameter in turn, and the expansion is the resultant
list. If parameter is an array variable subscripted with @ or
*, the pattern removal operation is applied to each member of
the array in turn, and the expansion is the resultant list.
あなたの場合、それは次のようなことをすることを意味します:
var4=ztemp.xml
var4=${var4%.*}
文字#
は、文字列のプレフィックス部分で同様に動作します。
Ksh、Zsh、およびBashはすべて、別の、おそらくより明確な構文を提供します。
_var4=$(echo ztemp.xml | cut -f1 -d '.')
_
一部のフォントでは、バックティック(別名「グレーブアクセント」)が読み取れません。 $(blahblah)
構文は、少なくともはるかに明白です。
一部のシェルではread
コマンドに値をパイプすることができます。
_ls -1 \*.\* | cut -f1 -d'.' | while read VAR4; do echo $VAR4; done
_
これは、変数を割り当てるもう1つの方法であり、作成したすべての複雑なコードを正しく強調表示できないテキストエディターで使用すると便利です。
read -r -d '' str < <(cat somefile.txt)
echo "${#str}"
echo "$str"