/ /シェルスクリプトの変数からキャリッジリターンと改行を取り除く方法 - shell、unix

シェルスクリプト内の変数から改行と改行を削除する方法 - シェル、unix

私はシェルスクリプトが初めてです。 Windowsで作成され、キャリッジリターンを持つファイルをソースコードとして使用しています。 source コマンド。私がそれにいくつかの文字を追加するときに私が調べた後、それは常に行の先頭に来る。

test.dat (末尾にキャリッジリターンがあります):

testVar=value123

testScript.sh (ファイル上の情報源):

source test.dat
echo $testVar got it

私が得る出力は

got it23

どうすれば "r" 変数から?

回答:

回答№1の場合は35

さらに別の解決策は tr

echo $testVar | tr -d "r"
cat myscript | tr -d "r"

オプション -d を意味する delete.


回答№2の11

次のようにsedを使うことができます。

MY_NEW_VAR=$(echo $testVar | sed -e "s/r//g")
echo ${MY_NEW_VAR} got it

ところで、やってみてください dos2unix データファイルに。


回答№3のための5

スクリプトファイルをLinux / Unixにコピーしてからこのコマンドを使用してください

perl -pi -e "s/r//" scriptfilename

答え№4の2

にパイプ sed -e "s/[rn]//g" 両方のキャリッジリターンを削除する(r)とラインフィード(n各テキスト行から)。


回答№5の場合は0

外部プログラムを呼び出さずに純粋なシェルソリューションを作成する場合

NL=$"n"    # define a variable to reference "newline"

testVar=${testVar%$NL}    # removes trailing "NL" from string

答え№6の場合は0

これにより、からのすべてのキャリッジリターンが削除されます。 $testVar を使用して シェルパラメータ拡張 そして ANSI-Cクォーティング (Bashが必要です):

testVar=${testVar//$"r"}