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

変数でディレクトリを変更するシェルスクリプト

変数に改行が含まれています。言ってみてください:

cd $(echo $RED_INSTANCE_NAME | tr -d '\r')

そしてそれはうまくいくはずです。変数から CR を削除するには、次のように言えます:

RED_INSTANCE_NAME=$(echo $RED_INSTANCE_NAME | tr -d '\r')

以下に問題を示します:

$ mkdir abc
$ foo=abc$'\r'
$ echo "${foo}"
abc
$ cd "${foo}"
: No such file or directory
$ echo $foo | od -x
0000000 6261 0d63 000a
0000005
$ echo $foo | tr -d '\r' | od -x
0000000 6261 0a63
0000004
$ echo $'\r' | od -x
0000000 0a0d
0000002

説明した問題に遭遇する 1 つの方法は、チルダ (~) を使用することです。 ) を変数名に含めます。絶対パスまたは $HOME を使用してください 代わりに変数。 $HOME を使用することに注意してください には二重引用符が必要です。

# doesn't work
$ vartilde='~/'
$ cd $vartilde
-bash: cd: ~: No such file or directory

# works
$ varfullpath='/Users/recurvirostridae'
$ cd $varfullpath

# works
$ varwithhome="$HOME"
$ cd $varwithhome

試す

cd "$RED_INSTANCE_NAME"

また、パスが cd である現在のディレクトリへの意味があることを確認してください コマンドが実行されます。


Linux
  1. スペースを含むファイル名をシェルスクリプトに渡しますか?

  2. 関数とパラメータを変数として持つシェルスクリプト?

  3. BashスクリプトのRmコマンドは変数では機能しませんか?

  1. シェルスクリプトはどこから実行されますか?

  2. コマンドをシェルスクリプトの変数に格納する方法は?

  3. UbuntuのPATH変数はどこに設定されていますか?

  1. シェルスクリプトでユーザーのパスワードを確認する

  2. Shell =変数が#で始まるかどうかを確認します

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?