1

whoamiコマンドで端末のユーザーIDを取得したい。以下にスクリプトを示しましたが、ユーザー名ではなくコマンド名を返すだけですか?

whoami コマンドを使用して端末ユーザー ID を取得するにはどうすればよいですか?

私のコードは、

send "whoami\r"
      set timeout 5
      expect -re {([a-z]+)} {
       set jobid $expect_out(0,string)
      }
      send_user "\r\nUSER $jobid\r\n"
}

上記のコードの出力は、

asisdtt-exp7$ whoami
USER whoami
kandabap
asisdtt-exp7$ exit

予想されるユーザー ID (kandabap) の最初の文字をハードコーディングすると、正しい答えが得られます。そのコードは、

send "whoami\r"
      set timeout 5
      expect -re {k([a-z]+)} {
       set jobid $expect_out(0,string)
      }
      send_user "\r\nUSER $jobid\r\n"

出力、

asisdtt-exp7$ whoami
kandabap
asisdtt-exp7$ 
USER kandabap

私はとても混乱しています。

4

1 に答える 1

5

あなたが本当に何をしようとしているのかはわかりませんが、これはうまくいきます:

log_user 0
spawn whoami
expect eof
set jobid $expect_out(buffer)
puts "USER $jobid"

もちろん、どれも本当に必要なものではありません。プレーンな TCL を使用して同じことを行うことができます。

puts "USER [exec whoami]"
于 2012-06-28T08:26:12.677 に答える