入力に応じて異なるディレクトリに変更されるスクリプトを作成したいと思います。このようなもの:
test.sh:
#!/bin/bash
ssh machine001 '(chdir ~/dev$1; pwd)'
しかし、私が実行する./test.sh 2
と、それはまだに行き~/dev
ます。私の議論は無視されているようです。私はここで非常に愚かなことをしていますか?
Bash は、単一引用符 (') で囲まれた文字列内の変数構文を無視します。置換するには、二重引用符 (") が必要です。
#!/bin/bash
ssh machine001 "(chdir ~/dev$1; pwd)"
パラメーターはシングル クォーテーションで囲まれているため、ローカル側では展開されません。代わりに二重引用符を使用してください。
#!/bin/bash
ssh machine001 "chdir ~/dev$1; pwd"
(...)
コマンドのペアを実行してから終了するだけなので、 は必要ありません。