リモートコンピュータにSSH経由で接続し、adduserコマンドを実行するbashスクリプトを作成しています。これはうまくいきません。以下のコードを実行すると、adduserの--helpテキストのみが表示されます。
ssh [email protected] 'useradd $username; mkdir /home/$username;' || echo "Unable to create user on pizza.cs.fredonia.edu";;
Ubuntu14.01
答え1
二重引用符を使ってみましたか?一重引用符内で、BASHは$ username変数を拡張しません。
たとえば、$ username = bobの場合、このコマンドは変数を拡張します。
ssh user@hostname "useradd $username; mkdir /home/$username;"
引用されたセクションは次に展開されます。
useradd bob; mkdir /home/bob;
ただし、次のように一重引用符を使用する場合:
ssh user@hostname 'useradd $username; mkdir /home/$username;'
これにより、引用された部分は変更されません。これは次のように解釈されます。
useradd $username; mkdir /home/$username;
しかし、最後に$ usernameの後には;は必要ありません。